diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 5862479a5f..7aae820122 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -58,9 +58,6 @@ // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. "remoteUser": "vscode", "containerUser": "vscode", - "features": { - "git": "os-provided" - }, "remoteEnv": { // InvenTree config diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index c8f98566c2..238d4c84f2 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -46,6 +46,7 @@ jobs: - docker.dev.env - Dockerfile - requirements.txt + - tasks.py # Build the docker image diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml index 8a3e1d609b..12be395d76 100644 --- a/.github/workflows/qc_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -30,6 +30,7 @@ jobs: server: ${{ steps.filter.outputs.server }} migrations: ${{ steps.filter.outputs.migrations }} frontend: ${{ steps.filter.outputs.frontend }} + api: ${{ steps.filter.outputs.api }} steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 @@ -44,6 +45,8 @@ jobs: migrations: - '**/migrations/**' - '.github/workflows**' + api: + - 'InvenTree/InvenTree/api_version.py' frontend: - 'src/frontend/**' @@ -105,12 +108,98 @@ jobs: - name: Check Config run: | pip install pyyaml + pip install -r docs/requirements.txt python docs/ci/check_mkdocs_config.py - name: Check Links run: | pip install linkcheckmd requests python -m linkcheckmd docs --recurse + schema: + name: Tests - API Schema Documentation + runs-on: ubuntu-20.04 + needs: paths-filter + if: needs.paths-filter.outputs.server == 'true' + env: + INVENTREE_DB_ENGINE: django.db.backends.sqlite3 + INVENTREE_DB_NAME: ../inventree_unit_test_db.sqlite3 + INVENTREE_ADMIN_USER: testuser + INVENTREE_ADMIN_PASSWORD: testpassword + INVENTREE_ADMIN_EMAIL: test@test.com + INVENTREE_PYTHON_TEST_SERVER: http://localhost:12345 + INVENTREE_PYTHON_TEST_USERNAME: testuser + INVENTREE_PYTHON_TEST_PASSWORD: testpassword + outputs: + version: ${{ steps.version.outputs.version }} + + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - name: Environment Setup + uses: ./.github/actions/setup + with: + apt-dependency: gettext poppler-utils + dev-install: true + update: true + - name: Export API Documentation + run: invoke schema --ignore-warnings + - name: Upload schema + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # pin@v3.1.3 + with: + name: schema.yml + path: InvenTree/schema.yml + - name: Download public schema + if: needs.paths-filter.outputs.api == 'false' + run: | + pip install requests >/dev/null 2>&1 + version="$(python3 ci/version_check.py only_version 2>&1)" + echo "Version: $version" + url="https://raw.githubusercontent.com/inventree/schema/main/export/${version}/api.yaml" + echo "URL: $url" + curl -s -o api.yaml $url + echo "Downloaded api.yaml" + - name: Check for differences in schemas + if: needs.paths-filter.outputs.api == 'false' + run: | + diff --color -u InvenTree/schema.yml api.yaml + diff -u InvenTree/schema.yml api.yaml && echo "no difference in API schema " || exit 2 + - name: Check schema - including warnings + run: invoke schema + continue-on-error: true + - name: Extract version for publishing + id: version + if: github.ref == 'refs/heads/master' && needs.paths-filter.outputs.api == 'true' + run: | + pip install requests >/dev/null 2>&1 + version="$(python3 ci/version_check.py only_version 2>&1)" + echo "Version: $version" + echo "version=$version" >> "$GITHUB_OUTPUT" + + schema-push: + name: Push new schema + runs-on: ubuntu-20.04 + needs: [paths-filter, schema] + if: needs.schema.result == 'success' && github.ref == 'refs/heads/master' && needs.paths-filter.outputs.api == 'true' + env: + version: ${{ needs.schema.outputs.version }} + + steps: + - uses: actions/checkout@v4 + with: + repository: inventree/schema + token: ${{ secrets.SCHEMA_PAT }} + - name: Download schema artifact + uses: actions/download-artifact@v3 + with: + name: schema.yml + - name: Move schema to correct location + run: | + echo "Version: $version" + mkdir export/${version} + mv schema.yml export/${version}/api.yaml + - uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: "Update API schema for ${version}" + python: name: Tests - inventree-python runs-on: ubuntu-20.04 @@ -357,6 +446,13 @@ jobs: chmod +rw /home/runner/work/InvenTree/db.sqlite3 invoke migrate + - name: 0.13.5 Database + run: | + rm /home/runner/work/InvenTree/db.sqlite3 + cp test-db/stable_0.13.5.sqlite3 /home/runner/work/InvenTree/db.sqlite3 + chmod +rw /home/runner/work/InvenTree/db.sqlite3 + invoke migrate + platform_ui: name: Tests - Platform UI runs-on: ubuntu-20.04 diff --git a/.gitignore b/.gitignore index a590b45fc7..6296696ebe 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,7 @@ label.pdf label.png InvenTree/my_special* _tests*.txt +schema.yml # Local static and media file storage (only when running in development mode) inventree_media @@ -70,6 +71,7 @@ secret_key.txt .idea/ *.code-workspace .bash_history +.DS_Store # https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore .vscode/* @@ -107,5 +109,8 @@ InvenTree/plugins/ *.mo messages.ts +# Generated API schema file +api.yaml + # web frontend (static files) InvenTree/web/static diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 764691ede0..8c359ac93d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,7 +16,7 @@ repos: - id: check-yaml - id: mixed-line-ending - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.11 + rev: v0.2.1 hooks: - id: ruff-format args: [--preview] @@ -37,7 +37,7 @@ repos: args: [requirements.in, -o, requirements.txt] files: ^requirements\.(in|txt)$ - repo: https://github.com/Riverside-Healthcare/djLint - rev: v1.34.0 + rev: v1.34.1 hooks: - id: djlint-django - repo: https://github.com/codespell-project/codespell @@ -52,7 +52,7 @@ repos: src/frontend/src/locales/.* | )$ - repo: https://github.com/pre-commit/mirrors-prettier - rev: "v3.0.3" + rev: "v4.0.0-alpha.8" hooks: - id: prettier files: ^src/frontend/.*\.(js|jsx|ts|tsx)$ @@ -60,7 +60,7 @@ repos: - "prettier@^2.4.1" - "@trivago/prettier-plugin-sort-imports" - repo: https://github.com/pre-commit/mirrors-eslint - rev: "v8.51.0" + rev: "v9.0.0-alpha.2" hooks: - id: eslint additional_dependencies: diff --git a/.vscode/launch.json b/.vscode/launch.json index 55aa17b353..8d01312e36 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -21,6 +21,13 @@ "args": ["runserver"], "django": true, "justMyCode": false + }, + { + "name": "InvenTree Frontend - Vite", + "type": "chrome", + "request": "launch", + "url": "http://localhost:5173", + "webRoot": "${workspaceFolder}/src/frontend" } ] } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 78fd74a5b1..b079f12437 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -79,6 +79,10 @@ The HEAD of the "stable" branch represents the latest stable release code. - When approved, the branch is merged back *into* stable, with an incremented PATCH number (e.g. 0.4.1 -> 0.4.2) - The bugfix *must* also be cherry picked into the *master* branch. +## API versioning + +The [API version](https://github.com/inventree/InvenTree/blob/master/InvenTree/InvenTree/api_version.py) needs to be bumped every time when the API is changed. + ## Environment ### Target version We are currently targeting: diff --git a/Dockerfile b/Dockerfile index 6d6798f5d3..e657d41599 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,9 +13,9 @@ ARG base_image=python:3.10-alpine3.18 FROM ${base_image} as inventree_base # Build arguments for this image +ARG commit_tag="" ARG commit_hash="" ARG commit_date="" -ARG commit_tag="" ENV PYTHONUNBUFFERED 1 ENV PIP_DISABLE_PIP_VERSION_CHECK 1 @@ -60,13 +60,7 @@ RUN apk add --no-cache \ # Image format support libjpeg libwebp zlib \ # Weasyprint requirements : https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#alpine-3-12 - py3-pip py3-pillow py3-cffi py3-brotli pango poppler-utils openldap \ - # SQLite support - sqlite \ - # PostgreSQL support - postgresql-libs postgresql-client \ - # MySQL / MariaDB support - mariadb-connector-c-dev mariadb-client && \ + py3-pip py3-pillow py3-cffi py3-brotli pango poppler-utils openldap && \ # fonts apk --update --upgrade --no-cache add fontconfig ttf-freefont font-noto terminus-font && fc-cache -f @@ -90,7 +84,7 @@ RUN if [ `apk --print-arch` = "armv7" ]; then \ COPY tasks.py docker/gunicorn.conf.py docker/init.sh ./ RUN chmod +x init.sh -ENTRYPOINT ["/bin/sh", "./init.sh"] +ENTRYPOINT ["/bin/ash", "./init.sh"] FROM inventree_base as prebuild diff --git a/InvenTree/InvenTree/api.py b/InvenTree/InvenTree/api.py index d47cf4b792..41f292b7b2 100644 --- a/InvenTree/InvenTree/api.py +++ b/InvenTree/InvenTree/api.py @@ -1,5 +1,7 @@ """Main JSON interface views.""" +import sys + from django.conf import settings from django.db import transaction from django.http import JsonResponse @@ -8,6 +10,7 @@ from django.utils.translation import gettext_lazy as _ from django_q.models import OrmQ from drf_spectacular.utils import OpenApiResponse, extend_schema from rest_framework import permissions, serializers +from rest_framework.generics import GenericAPIView from rest_framework.response import Response from rest_framework.serializers import ValidationError from rest_framework.views import APIView @@ -18,6 +21,7 @@ from InvenTree.filters import SEARCH_ORDER_FILTER from InvenTree.mixins import ListCreateAPI from InvenTree.permissions import RolePermission from InvenTree.templatetags.inventree_extras import plugins_info +from part.models import Part from plugin.serializers import MetadataSerializer from users.models import ApiToken @@ -28,11 +32,41 @@ from .version import inventreeApiText from .views import AjaxView +class VersionViewSerializer(serializers.Serializer): + """Serializer for a single version.""" + + class VersionSerializer(serializers.Serializer): + """Serializer for server version.""" + + server = serializers.CharField() + api = serializers.IntegerField() + commit_hash = serializers.CharField() + commit_date = serializers.CharField() + commit_branch = serializers.CharField() + python = serializers.CharField() + django = serializers.CharField() + + class LinkSerializer(serializers.Serializer): + """Serializer for all possible links.""" + + doc = serializers.URLField() + code = serializers.URLField() + credit = serializers.URLField() + app = serializers.URLField() + bug = serializers.URLField() + + dev = serializers.BooleanField() + up_to_date = serializers.BooleanField() + version = VersionSerializer() + links = LinkSerializer() + + class VersionView(APIView): """Simple JSON endpoint for InvenTree version information.""" permission_classes = [permissions.IsAdminUser] + @extend_schema(responses={200: OpenApiResponse(response=VersionViewSerializer)}) def get(self, request, *args, **kwargs): """Return information about the InvenTree server.""" return JsonResponse({ @@ -81,6 +115,8 @@ class VersionApiSerializer(serializers.Serializer): class VersionTextView(ListAPI): """Simple JSON endpoint for InvenTree version text.""" + serializer_class = VersionSerializer + permission_classes = [permissions.IsAdminUser] @extend_schema(responses={200: OpenApiResponse(response=VersionApiSerializer)}) @@ -120,36 +156,32 @@ class InfoView(AjaxView): 'email_configured': is_email_configured(), 'debug_mode': settings.DEBUG, 'docker_mode': settings.DOCKER, + 'default_locale': settings.LANGUAGE_CODE, + # Following fields are only available to staff users 'system_health': check_system_health() if is_staff else None, 'database': InvenTree.version.inventreeDatabase() if is_staff else None, 'platform': InvenTree.version.inventreePlatform() if is_staff else None, 'installer': InvenTree.version.inventreeInstaller() if is_staff else None, 'target': InvenTree.version.inventreeTarget() if is_staff else None, - 'default_locale': settings.LANGUAGE_CODE, } return JsonResponse(data) def check_auth_header(self, request): """Check if user is authenticated via a token in the header.""" - # TODO @matmair: remove after refacgtor of Token check is done - headers = request.headers.get( - 'Authorization', request.headers.get('authorization') - ) - if not headers: - return False + from InvenTree.middleware import get_token_from_request - auth = headers.strip() - if not (auth.lower().startswith('token') and len(auth.split()) == 2): - return False + if token := get_token_from_request(request): + # Does the provided token match a valid user? + try: + token = ApiToken.objects.get(key=token) + + # Check if the token is active and the user is a staff member + if token.active and token.user and token.user.is_staff: + return True + except ApiToken.DoesNotExist: + pass - token_key = auth.split()[1] - try: - token = ApiToken.objects.get(key=token_key) - if token.active and token.user and token.user.is_staff: - return True - except ApiToken.DoesNotExist: - pass return False @@ -328,7 +360,17 @@ class AttachmentMixin: attachment.save() -class APISearchView(APIView): +class APISearchViewSerializer(serializers.Serializer): + """Serializer for the APISearchView.""" + + search = serializers.CharField() + search_regex = serializers.BooleanField(default=False, required=False) + search_whole = serializers.BooleanField(default=False, required=False) + limit = serializers.IntegerField(default=1, required=False) + offset = serializers.IntegerField(default=0, required=False) + + +class APISearchView(GenericAPIView): """A general-purpose 'search' API endpoint. Returns hits against a number of different models simultaneously, @@ -338,6 +380,7 @@ class APISearchView(APIView): """ permission_classes = [permissions.IsAuthenticated] + serializer_class = APISearchViewSerializer def get_result_types(self): """Construct a list of search types we can return.""" @@ -450,4 +493,7 @@ class MetadataView(RetrieveUpdateAPI): def get_serializer(self, *args, **kwargs): """Return MetadataSerializer instance.""" + # Detect if we are currently generating the OpenAPI schema + if 'spectacular' in sys.argv: + return MetadataSerializer(Part, *args, **kwargs) return MetadataSerializer(self.get_model_type(), *args, **kwargs) diff --git a/InvenTree/InvenTree/api_version.py b/InvenTree/InvenTree/api_version.py index 320b828695..4364f8e6e7 100644 --- a/InvenTree/InvenTree/api_version.py +++ b/InvenTree/InvenTree/api_version.py @@ -1,11 +1,47 @@ """InvenTree API version information.""" # InvenTree API version -INVENTREE_API_VERSION = 162 +INVENTREE_API_VERSION = 171 """Increment this API version number whenever there is a significant change to the API that any clients need to know about.""" INVENTREE_API_TEXT = """ +v171 - 2024-02-19 : https://github.com/inventree/InvenTree/pull/6516 + - Adds "key" as a filterable parameter to PartTestTemplate list endpoint + +v170 -> 2024-02-19 : https://github.com/inventree/InvenTree/pull/6514 + - Adds "has_results" filter to the PartTestTemplate list endpoint + +v169 -> 2024-02-14 : https://github.com/inventree/InvenTree/pull/6430 + - Adds 'key' field to PartTestTemplate API endpoint + - Adds annotated 'results' field to PartTestTemplate API endpoint + - Adds 'template' field to StockItemTestResult API endpoint + +v168 -> 2024-02-14 : https://github.com/inventree/InvenTree/pull/4824 + - Adds machine CRUD API endpoints + - Adds machine settings API endpoints + - Adds machine restart API endpoint + - Adds machine types/drivers list API endpoints + - Adds machine registry status API endpoint + - Adds 'required' field to the global Settings API + - Discover sub-sub classes of the StatusCode API + +v167 -> 2024-02-07: https://github.com/inventree/InvenTree/pull/6440 + - Fixes for OpenAPI schema generation + +v166 -> 2024-02-04 : https://github.com/inventree/InvenTree/pull/6400 + - Adds package_name to plugin API + - Adds mechanism for uninstalling plugins via the API + +v165 -> 2024-01-28 : https://github.com/inventree/InvenTree/pull/6040 + - Adds supplier_part.name, part.creation_user, part.required_for_sales_order + +v164 -> 2024-01-24 : https://github.com/inventree/InvenTree/pull/6343 + - Adds "building" quantity to BuildLine API serializer + +v163 -> 2024-01-22 : https://github.com/inventree/InvenTree/pull/6314 + - Extends API endpoint to expose auth configuration information for signin pages + v162 -> 2024-01-14 : https://github.com/inventree/InvenTree/pull/6230 - Adds API endpoints to provide information on background tasks diff --git a/InvenTree/InvenTree/apps.py b/InvenTree/InvenTree/apps.py index edb02dbea9..2e90780efa 100644 --- a/InvenTree/InvenTree/apps.py +++ b/InvenTree/InvenTree/apps.py @@ -58,6 +58,7 @@ class InvenTreeConfig(AppConfig): # Let the background worker check for migrations InvenTree.tasks.offload_task(InvenTree.tasks.check_for_migrations) + self.update_site_url() self.collect_notification_methods() self.collect_state_transition_methods() @@ -223,6 +224,46 @@ class InvenTreeConfig(AppConfig): except Exception as e: logger.exception('Error updating exchange rates: %s (%s)', e, type(e)) + def update_site_url(self): + """Update the site URL setting. + + - If a fixed SITE_URL is specified (via configuration), it should override the INVENTREE_BASE_URL setting + - If multi-site support is enabled, update the site URL for the current site + """ + import common.models + + if not InvenTree.ready.canAppAccessDatabase(): + return + + if InvenTree.ready.isImportingData() or InvenTree.ready.isRunningMigrations(): + return + + if settings.SITE_URL: + try: + if ( + common.models.InvenTreeSetting.get_setting('INVENTREE_BASE_URL') + != settings.SITE_URL + ): + common.models.InvenTreeSetting.set_setting( + 'INVENTREE_BASE_URL', settings.SITE_URL + ) + logger.info('Updated INVENTREE_SITE_URL to %s', settings.SITE_URL) + except Exception: + pass + + # If multi-site support is enabled, update the site URL for the current site + try: + from django.contrib.sites.models import Site + + site = Site.objects.get_current() + site.domain = settings.SITE_URL + site.save() + + logger.info('Updated current site URL to %s', settings.SITE_URL) + + except Exception: + pass + def add_user_on_startup(self): """Add a user on startup.""" # stop if checks were already created diff --git a/InvenTree/InvenTree/backends.py b/InvenTree/InvenTree/backends.py new file mode 100644 index 0000000000..82fca3fc05 --- /dev/null +++ b/InvenTree/InvenTree/backends.py @@ -0,0 +1,85 @@ +"""Custom backend implementations.""" + +import datetime +import logging +import time + +from django.db.utils import IntegrityError, OperationalError, ProgrammingError + +from maintenance_mode.backends import AbstractStateBackend + +import common.models + +logger = logging.getLogger('inventree') + + +class InvenTreeMaintenanceModeBackend(AbstractStateBackend): + """Custom backend for managing state of maintenance mode. + + Stores a timestamp in the database to determine when maintenance mode will elapse. + """ + + SETTING_KEY = '_MAINTENANCE_MODE' + + def get_value(self) -> bool: + """Get the current state of the maintenance mode. + + Returns: + bool: True if maintenance mode is active, False otherwise. + """ + try: + setting = common.models.InvenTreeSetting.objects.get(key=self.SETTING_KEY) + value = str(setting.value).strip() + except common.models.InvenTreeSetting.DoesNotExist: + # Database is accessible, but setting is not available - assume False + return False + except (IntegrityError, OperationalError, ProgrammingError): + # Database is inaccessible - assume we are not in maintenance mode + logger.debug('Failed to read maintenance mode state - assuming True') + return True + + # Extract timestamp from string + try: + # If the timestamp is in the past, we are now *out* of maintenance mode + timestamp = datetime.datetime.fromisoformat(value) + return timestamp > datetime.datetime.now() + except ValueError: + # If the value is not a valid timestamp, assume maintenance mode is not active + return False + + def set_value(self, value: bool, retries: int = 5, minutes: int = 5): + """Set the state of the maintenance mode. + + Instead of simply writing "true" or "false" to the setting, + we write a timestamp to the setting, which is used to determine + when maintenance mode will elapse. + This ensures that we will always *exit* maintenance mode after a certain time period. + """ + logger.debug('Setting maintenance mode state: %s', value) + + if value: + # Save as isoformat + timestamp = datetime.datetime.now() + datetime.timedelta(minutes=minutes) + timestamp = timestamp.isoformat() + else: + # Blank timestamp means maintenance mode is not active + timestamp = '' + + while retries > 0: + try: + common.models.InvenTreeSetting.set_setting(self.SETTING_KEY, timestamp) + + # Read the value back to confirm + if self.get_value() == value: + break + except (IntegrityError, OperationalError, ProgrammingError): + # In the database is locked, then + logger.debug( + 'Failed to set maintenance mode state (%s retries left)', retries + ) + time.sleep(0.1) + + retries -= 1 + + if retries == 0: + logger.warning('Failed to set maintenance mode state') diff --git a/InvenTree/InvenTree/context.py b/InvenTree/InvenTree/context.py index e25a27d668..11bbb52e21 100644 --- a/InvenTree/InvenTree/context.py +++ b/InvenTree/InvenTree/context.py @@ -72,7 +72,7 @@ def user_roles(request): roles = {} - for role in RuleSet.RULESET_MODELS.keys(): + for role in RuleSet.get_ruleset_models().keys(): permissions = {} for perm in ['view', 'add', 'change', 'delete']: diff --git a/InvenTree/InvenTree/exceptions.py b/InvenTree/InvenTree/exceptions.py index f8742fe027..f6fca172a3 100644 --- a/InvenTree/InvenTree/exceptions.py +++ b/InvenTree/InvenTree/exceptions.py @@ -53,7 +53,10 @@ def log_error(path, error_name=None, error_info=None, error_data=None): if error_data: data = error_data else: - data = '\n'.join(traceback.format_exception(kind, info, data)) + try: + data = '\n'.join(traceback.format_exception(kind, info, data)) + except AttributeError: + data = 'No traceback information available' # Log error to stderr logger.error(info) diff --git a/InvenTree/InvenTree/forms.py b/InvenTree/InvenTree/forms.py index 3b5f15665b..3358804a9a 100644 --- a/InvenTree/InvenTree/forms.py +++ b/InvenTree/InvenTree/forms.py @@ -6,7 +6,6 @@ from urllib.parse import urlencode from django import forms from django.conf import settings from django.contrib.auth.models import Group, User -from django.contrib.sites.models import Site from django.http import HttpResponseRedirect from django.urls import reverse from django.utils.translation import gettext_lazy as _ @@ -23,6 +22,7 @@ from crispy_forms.layout import Field, Layout from dj_rest_auth.registration.serializers import RegisterSerializer from rest_framework import serializers +import InvenTree.helpers_model import InvenTree.sso from common.models import InvenTreeSetting from InvenTree.exceptions import log_error @@ -293,7 +293,8 @@ class CustomUrlMixin: def get_email_confirmation_url(self, request, emailconfirmation): """Custom email confirmation (activation) url.""" url = reverse('account_confirm_email', args=[emailconfirmation.key]) - return Site.objects.get_current().domain + url + + return InvenTree.helpers_model.construct_absolute_url(url) class CustomAccountAdapter( diff --git a/InvenTree/InvenTree/helpers.py b/InvenTree/InvenTree/helpers.py index 21cff6aff7..d36f93704e 100644 --- a/InvenTree/InvenTree/helpers.py +++ b/InvenTree/InvenTree/helpers.py @@ -8,6 +8,7 @@ import os import os.path import re from decimal import Decimal, InvalidOperation +from typing import TypeVar from wsgiref.util import FileWrapper from django.conf import settings @@ -30,16 +31,68 @@ from .settings import MEDIA_URL, STATIC_URL logger = logging.getLogger('inventree') -def generateTestKey(test_name): +def extract_int(reference, clip=0x7FFFFFFF, allow_negative=False): + """Extract an integer out of reference.""" + # Default value if we cannot convert to an integer + ref_int = 0 + + reference = str(reference).strip() + + # Ignore empty string + if len(reference) == 0: + return 0 + + # Look at the start of the string - can it be "integerized"? + result = re.match(r'^(\d+)', reference) + + if result and len(result.groups()) == 1: + ref = result.groups()[0] + try: + ref_int = int(ref) + except Exception: + ref_int = 0 + else: + # Look at the "end" of the string + result = re.search(r'(\d+)$', reference) + + if result and len(result.groups()) == 1: + ref = result.groups()[0] + try: + ref_int = int(ref) + except Exception: + ref_int = 0 + + # Ensure that the returned values are within the range that can be stored in an IntegerField + # Note: This will result in large values being "clipped" + if clip is not None: + if ref_int > clip: + ref_int = clip + elif ref_int < -clip: + ref_int = -clip + + if not allow_negative and ref_int < 0: + ref_int = abs(ref_int) + + return ref_int + + +def generateTestKey(test_name: str) -> str: """Generate a test 'key' for a given test name. This must not have illegal chars as it will be used for dict lookup in a template. Tests must be named such that they will have unique keys. """ + if test_name is None: + test_name = '' + key = test_name.strip().lower() key = key.replace(' ', '') # Remove any characters that cannot be used to represent a variable - key = re.sub(r'[^a-zA-Z0-9]', '', key) + key = re.sub(r'[^a-zA-Z0-9_]', '', key) + + # If the key starts with a digit, prefix with an underscore + if key[0].isdigit(): + key = '_' + key return key @@ -840,7 +893,10 @@ def get_objectreference( return {'name': str(item), 'model': str(model_cls._meta.verbose_name), **ret} -def inheritors(cls): +Inheritors_T = TypeVar('Inheritors_T') + + +def inheritors(cls: type[Inheritors_T]) -> set[type[Inheritors_T]]: """Return all classes that are subclasses from the supplied cls.""" subcls = set() work = [cls] diff --git a/InvenTree/InvenTree/helpers_mixin.py b/InvenTree/InvenTree/helpers_mixin.py new file mode 100644 index 0000000000..59c88785ed --- /dev/null +++ b/InvenTree/InvenTree/helpers_mixin.py @@ -0,0 +1,106 @@ +"""Provides helper mixins that are used throughout the InvenTree project.""" + +import inspect +from pathlib import Path + +from django.conf import settings + +from plugin import registry as plg_registry + + +class ClassValidationMixin: + """Mixin to validate class attributes and overrides. + + Class attributes: + required_attributes: List of class attributes that need to be defined + required_overrides: List of functions that need override, a nested list mean either one of them needs an override + + Example: + ```py + class Parent(ClassValidationMixin): + NAME: str + def test(self): + pass + + required_attributes = ["NAME"] + required_overrides = [test] + + class MyClass(Parent): + pass + + myClass = MyClass() + myClass.validate() # raises NotImplementedError + ``` + """ + + required_attributes = [] + required_overrides = [] + + @classmethod + def validate(cls): + """Validate the class against the required attributes/overrides.""" + + def attribute_missing(key): + """Check if attribute is missing.""" + return not hasattr(cls, key) or getattr(cls, key) == '' + + def override_missing(base_implementation): + """Check if override is missing.""" + if isinstance(base_implementation, list): + return all(override_missing(x) for x in base_implementation) + + return base_implementation == getattr( + cls, base_implementation.__name__, None + ) + + missing_attributes = list(filter(attribute_missing, cls.required_attributes)) + missing_overrides = list(filter(override_missing, cls.required_overrides)) + + errors = [] + + if len(missing_attributes) > 0: + errors.append( + f"did not provide the following attributes: {', '.join(missing_attributes)}" + ) + if len(missing_overrides) > 0: + missing_overrides_list = [] + for base_implementation in missing_overrides: + if isinstance(base_implementation, list): + missing_overrides_list.append( + 'one of ' + + ' or '.join(attr.__name__ for attr in base_implementation) + ) + else: + missing_overrides_list.append(base_implementation.__name__) + errors.append( + f"did not override the required attributes: {', '.join(missing_overrides_list)}" + ) + + if len(errors) > 0: + raise NotImplementedError(f"'{cls}' " + ' and '.join(errors)) + + +class ClassProviderMixin: + """Mixin to get metadata about a class itself, e.g. the plugin that provided that class.""" + + @classmethod + def get_provider_file(cls): + """File that contains the Class definition.""" + return inspect.getfile(cls) + + @classmethod + def get_provider_plugin(cls): + """Plugin that contains the Class definition, otherwise None.""" + for plg in plg_registry.plugins.values(): + if plg.package_path == cls.__module__: + return plg + + @classmethod + def get_is_builtin(cls): + """Is this Class build in the Inventree source code?""" + try: + Path(cls.get_provider_file()).relative_to(settings.BASE_DIR) + return True + except ValueError: + # Path(...).relative_to throws an ValueError if its not relative to the InvenTree source base dir + return False diff --git a/InvenTree/InvenTree/helpers_model.py b/InvenTree/InvenTree/helpers_model.py index b55e274f11..3b410819ae 100644 --- a/InvenTree/InvenTree/helpers_model.py +++ b/InvenTree/InvenTree/helpers_model.py @@ -34,47 +34,59 @@ def getSetting(key, backup_value=None): return common.models.InvenTreeSetting.get_setting(key, backup_value=backup_value) -def construct_absolute_url(*arg, **kwargs): +def get_base_url(request=None): + """Return the base URL for the InvenTree server. + + The base URL is determined in the following order of decreasing priority: + + 1. If a request object is provided, use the request URL + 2. Multi-site is enabled, and the current site has a valid URL + 3. If settings.SITE_URL is set (e.g. in the Django settings), use that + 4. If the InvenTree setting INVENTREE_BASE_URL is set, use that + """ + # Check if a request is provided + if request: + return request.build_absolute_uri('/') + + # Check if multi-site is enabled + try: + from django.contrib.sites.models import Site + + return Site.objects.get_current().domain + except (ImportError, RuntimeError): + pass + + # Check if a global site URL is provided + if site_url := getattr(settings, 'SITE_URL', None): + return site_url + + # Check if a global InvenTree setting is provided + try: + if site_url := common.models.InvenTreeSetting.get_setting( + 'INVENTREE_BASE_URL', create=False, cache=False + ): + return site_url + except (ProgrammingError, OperationalError): + pass + + # No base URL available + return '' + + +def construct_absolute_url(*arg, base_url=None, request=None): """Construct (or attempt to construct) an absolute URL from a relative URL. - This is useful when (for example) sending an email to a user with a link - to something in the InvenTree web framework. - A URL is constructed in the following order: - 1. If settings.SITE_URL is set (e.g. in the Django settings), use that - 2. If the InvenTree setting INVENTREE_BASE_URL is set, use that - 3. Otherwise, use the current request URL (if available) + Args: + *arg: The relative URL to construct + base_url: The base URL to use for the construction (if not provided, will attempt to determine from settings) + request: The request object to use for the construction (optional) """ relative_url = '/'.join(arg) - # If a site URL is provided, use that - site_url = getattr(settings, 'SITE_URL', None) + if not base_url: + base_url = get_base_url(request=request) - if not site_url: - # Otherwise, try to use the InvenTree setting - try: - site_url = common.models.InvenTreeSetting.get_setting( - 'INVENTREE_BASE_URL', create=False, cache=False - ) - except (ProgrammingError, OperationalError): - pass - - if not site_url: - # Otherwise, try to use the current request - request = kwargs.get('request', None) - - if request: - site_url = request.build_absolute_uri('/') - - if not site_url: - # No site URL available, return the relative URL - return relative_url - - return urljoin(site_url, relative_url) - - -def get_base_url(**kwargs): - """Return the base URL for the InvenTree server.""" - return construct_absolute_url('', **kwargs) + return urljoin(base_url, relative_url) def download_image_from_url(remote_url, timeout=2.5): @@ -287,6 +299,11 @@ def notify_responsible( content (NotificationBody, optional): _description_. Defaults to InvenTreeNotificationBodies.NewOrder. exclude (User, optional): User instance that should be excluded. Defaults to None. """ + import InvenTree.ready + + if InvenTree.ready.isImportingData() or InvenTree.ready.isRunningMigrations(): + return + notify_users( [instance.responsible], instance, sender, content=content, exclude=exclude ) diff --git a/InvenTree/InvenTree/locales.py b/InvenTree/InvenTree/locales.py index 9ff7e9e928..b0983871b3 100644 --- a/InvenTree/InvenTree/locales.py +++ b/InvenTree/InvenTree/locales.py @@ -36,6 +36,7 @@ LOCALES = [ ('pt', _('Portuguese')), ('pt-br', _('Portuguese (Brazilian)')), ('ru', _('Russian')), + ('sk', _('Slovak')), ('sl', _('Slovenian')), ('sr', _('Serbian')), ('sv', _('Swedish')), diff --git a/InvenTree/InvenTree/magic_login.py b/InvenTree/InvenTree/magic_login.py index 725b913bbf..996e0b35d1 100644 --- a/InvenTree/InvenTree/magic_login.py +++ b/InvenTree/InvenTree/magic_login.py @@ -2,7 +2,6 @@ from django.conf import settings from django.contrib.auth.models import User -from django.contrib.sites.models import Site from django.core.mail import send_mail from django.template.loader import render_to_string from django.urls import reverse @@ -10,21 +9,23 @@ from django.utils.translation import gettext_lazy as _ import sesame.utils from rest_framework import serializers +from rest_framework.generics import GenericAPIView from rest_framework.response import Response -from rest_framework.views import APIView + +import InvenTree.version def send_simple_login_email(user, link): """Send an email with the login link to this user.""" - site = Site.objects.get_current() + site_name = InvenTree.version.inventreeInstanceName() - context = {'username': user.username, 'site_name': site.name, 'link': link} + context = {'username': user.username, 'site_name': site_name, 'link': link} email_plaintext_message = render_to_string( 'InvenTree/user_simple_login.txt', context ) send_mail( - _(f'[{site.name}] Log in to the app'), + _(f'[{site_name}] Log in to the app'), email_plaintext_message, settings.DEFAULT_FROM_EMAIL, [user.email], @@ -37,7 +38,7 @@ class GetSimpleLoginSerializer(serializers.Serializer): email = serializers.CharField(label=_('Email')) -class GetSimpleLoginView(APIView): +class GetSimpleLoginView(GenericAPIView): """View to send a simple login link.""" permission_classes = () diff --git a/InvenTree/InvenTree/management/commands/check_migrations.py b/InvenTree/InvenTree/management/commands/check_migrations.py new file mode 100644 index 0000000000..b06971724c --- /dev/null +++ b/InvenTree/InvenTree/management/commands/check_migrations.py @@ -0,0 +1,19 @@ +"""Check if there are any pending database migrations, and run them.""" + +import logging + +from django.core.management.base import BaseCommand + +from InvenTree.tasks import check_for_migrations + +logger = logging.getLogger('inventree') + + +class Command(BaseCommand): + """Check if there are any pending database migrations, and run them.""" + + def handle(self, *args, **kwargs): + """Check for any pending database migrations.""" + logger.info('Checking for pending database migrations') + check_for_migrations(force=True, reload_registry=False) + logger.info('Database migrations complete') diff --git a/InvenTree/InvenTree/management/commands/rebuild_models.py b/InvenTree/InvenTree/management/commands/rebuild_models.py index 02af71f3a5..f90664fb5b 100644 --- a/InvenTree/InvenTree/management/commands/rebuild_models.py +++ b/InvenTree/InvenTree/management/commands/rebuild_models.py @@ -3,60 +3,73 @@ - This is crucial after importing any fixtures, etc """ +import logging + from django.core.management.base import BaseCommand +from maintenance_mode.core import maintenance_mode_on, set_maintenance_mode + +logger = logging.getLogger('inventree') + class Command(BaseCommand): """Rebuild all database models which leverage the MPTT structure.""" def handle(self, *args, **kwargs): """Rebuild all database models which leverage the MPTT structure.""" + with maintenance_mode_on(): + self.rebuild_models() + + set_maintenance_mode(False) + + def rebuild_models(self): + """Rebuild all MPTT models in the database.""" # Part model try: - print('Rebuilding Part objects') + logger.info('Rebuilding Part objects') from part.models import Part Part.objects.rebuild() except Exception: - print('Error rebuilding Part objects') + logger.info('Error rebuilding Part objects') # Part category try: - print('Rebuilding PartCategory objects') + logger.info('Rebuilding PartCategory objects') from part.models import PartCategory PartCategory.objects.rebuild() except Exception: - print('Error rebuilding PartCategory objects') + logger.info('Error rebuilding PartCategory objects') # StockItem model try: - print('Rebuilding StockItem objects') + logger.info('Rebuilding StockItem objects') from stock.models import StockItem StockItem.objects.rebuild() except Exception: - print('Error rebuilding StockItem objects') + logger.info('Error rebuilding StockItem objects') # StockLocation model try: - print('Rebuilding StockLocation objects') + logger.info('Rebuilding StockLocation objects') from stock.models import StockLocation StockLocation.objects.rebuild() except Exception: - print('Error rebuilding StockLocation objects') + logger.info('Error rebuilding StockLocation objects') # Build model try: - print('Rebuilding Build objects') + logger.info('Rebuilding Build objects') from build.models import Build Build.objects.rebuild() except Exception: - print('Error rebuilding Build objects') + logger.info('Error rebuilding Build objects') diff --git a/InvenTree/InvenTree/management/commands/runmigrations.py b/InvenTree/InvenTree/management/commands/runmigrations.py new file mode 100644 index 0000000000..b06971724c --- /dev/null +++ b/InvenTree/InvenTree/management/commands/runmigrations.py @@ -0,0 +1,19 @@ +"""Check if there are any pending database migrations, and run them.""" + +import logging + +from django.core.management.base import BaseCommand + +from InvenTree.tasks import check_for_migrations + +logger = logging.getLogger('inventree') + + +class Command(BaseCommand): + """Check if there are any pending database migrations, and run them.""" + + def handle(self, *args, **kwargs): + """Check for any pending database migrations.""" + logger.info('Checking for pending database migrations') + check_for_migrations(force=True, reload_registry=False) + logger.info('Database migrations complete') diff --git a/InvenTree/InvenTree/metadata.py b/InvenTree/InvenTree/metadata.py index 11a61b3a69..65097ed758 100644 --- a/InvenTree/InvenTree/metadata.py +++ b/InvenTree/InvenTree/metadata.py @@ -7,6 +7,7 @@ from rest_framework.fields import empty from rest_framework.metadata import SimpleMetadata from rest_framework.utils import model_meta +import common.models import InvenTree.permissions import users.models from InvenTree.helpers import str2bool @@ -208,7 +209,10 @@ class InvenTreeMetadata(SimpleMetadata): pk = kwargs[field] break - if pk is not None: + if issubclass(model_class, common.models.BaseInvenTreeSetting): + instance = model_class.get_setting_object(**kwargs, create=False) + + elif pk is not None: try: instance = model_class.objects.get(pk=pk) except (ValueError, model_class.DoesNotExist): diff --git a/InvenTree/InvenTree/middleware.py b/InvenTree/InvenTree/middleware.py index 79f51b7914..e9a272e13b 100644 --- a/InvenTree/InvenTree/middleware.py +++ b/InvenTree/InvenTree/middleware.py @@ -18,6 +18,23 @@ from users.models import ApiToken logger = logging.getLogger('inventree') +def get_token_from_request(request): + """Extract token information from a request object.""" + auth_keys = ['Authorization', 'authorization'] + token_keys = ['token', 'bearer'] + + for k in auth_keys: + if auth_header := request.headers.get(k, None): + auth_header = auth_header.strip().lower().split() + + if len(auth_header) > 1: + if auth_header[0].strip().lower().replace(':', '') in token_keys: + token = auth_header[1] + return token + + return None + + class AuthRequiredMiddleware(object): """Check for user to be authenticated.""" @@ -25,6 +42,22 @@ class AuthRequiredMiddleware(object): """Save response object.""" self.get_response = get_response + def check_token(self, request) -> bool: + """Check if the user is authenticated via token.""" + if token := get_token_from_request(request): + # Does the provided token match a valid user? + try: + token = ApiToken.objects.get(key=token) + + if token.active and token.user: + # Provide the user information to the request + request.user = token.user + return True + except ApiToken.DoesNotExist: + logger.warning('Access denied for unknown token %s', token) + + return False + def __call__(self, request): """Check if user needs to be authenticated and is. @@ -70,28 +103,8 @@ class AuthRequiredMiddleware(object): ): authorized = True - elif ( - 'Authorization' in request.headers.keys() - or 'authorization' in request.headers.keys() - ): - auth = request.headers.get( - 'Authorization', request.headers.get('authorization') - ).strip() - - if auth.lower().startswith('token') and len(auth.split()) == 2: - token_key = auth.split()[1] - - # Does the provided token match a valid user? - try: - token = ApiToken.objects.get(key=token_key) - - if token.active and token.user: - # Provide the user information to the request - request.user = token.user - authorized = True - - except ApiToken.DoesNotExist: - logger.warning('Access denied for unknown token %s', token_key) + elif self.check_token(request): + authorized = True # No authorization was found for the request if not authorized: diff --git a/InvenTree/InvenTree/mixins.py b/InvenTree/InvenTree/mixins.py index 9b369b652b..fd63726d96 100644 --- a/InvenTree/InvenTree/mixins.py +++ b/InvenTree/InvenTree/mixins.py @@ -9,56 +9,6 @@ from InvenTree.fields import InvenTreeNotesField from InvenTree.helpers import remove_non_printable_characters, strip_html_tags -class DiffMixin: - """Mixin which can be used to determine which fields have changed, compared to the instance saved to the database.""" - - def get_db_instance(self): - """Return the instance of the object saved in the database. - - Returns: - object: Instance of the object saved in the database - """ - if self.pk: - try: - return self.__class__.objects.get(pk=self.pk) - except self.__class__.DoesNotExist: - pass - - return None - - def get_field_deltas(self): - """Return a dict of field deltas. - - Compares the current instance with the instance saved in the database, - and returns a dict of fields which have changed. - - Returns: - dict: Dict of field deltas - """ - db_instance = self.get_db_instance() - - if db_instance is None: - return {} - - deltas = {} - - for field in self._meta.fields: - if field.name == 'id': - continue - - if getattr(self, field.name) != getattr(db_instance, field.name): - deltas[field.name] = { - 'old': getattr(db_instance, field.name), - 'new': getattr(self, field.name), - } - - return deltas - - def has_field_changed(self, field_name): - """Determine if a particular field has changed.""" - return field_name in self.get_field_deltas() - - class CleanMixin: """Model mixin class which cleans inputs using the Mozilla bleach tools.""" diff --git a/InvenTree/InvenTree/models.py b/InvenTree/InvenTree/models.py index 3b7451a8cd..75c5d845d8 100644 --- a/InvenTree/InvenTree/models.py +++ b/InvenTree/InvenTree/models.py @@ -2,7 +2,6 @@ import logging import os -import re from datetime import datetime from io import BytesIO @@ -30,18 +29,98 @@ from InvenTree.sanitizer import sanitize_svg logger = logging.getLogger('inventree') -def rename_attachment(instance, filename): - """Function for renaming an attachment file. The subdirectory for the uploaded file is determined by the implementing class. +class DiffMixin: + """Mixin which can be used to determine which fields have changed, compared to the instance saved to the database.""" - Args: - instance: Instance of a PartAttachment object - filename: name of uploaded file + def get_db_instance(self): + """Return the instance of the object saved in the database. - Returns: - path to store file, format: '//filename' + Returns: + object: Instance of the object saved in the database + """ + if self.pk: + try: + return self.__class__.objects.get(pk=self.pk) + except self.__class__.DoesNotExist: + pass + + return None + + def get_field_deltas(self): + """Return a dict of field deltas. + + Compares the current instance with the instance saved in the database, + and returns a dict of fields which have changed. + + Returns: + dict: Dict of field deltas + """ + db_instance = self.get_db_instance() + + if db_instance is None: + return {} + + deltas = {} + + for field in self._meta.fields: + if field.name == 'id': + continue + + if getattr(self, field.name) != getattr(db_instance, field.name): + deltas[field.name] = { + 'old': getattr(db_instance, field.name), + 'new': getattr(self, field.name), + } + + return deltas + + def has_field_changed(self, field_name): + """Determine if a particular field has changed.""" + return field_name in self.get_field_deltas() + + +class PluginValidationMixin(DiffMixin): + """Mixin class which exposes the model instance to plugin validation. + + Any model class which inherits from this mixin will be exposed to the plugin validation system. """ - # Construct a path to store a file attachment for a given model type - return os.path.join(instance.getSubdir(), filename) + + def run_plugin_validation(self): + """Throw this model against the plugin validation interface.""" + from plugin.registry import registry + + deltas = self.get_field_deltas() + + for plugin in registry.with_mixin('validation'): + try: + if plugin.validate_model_instance(self, deltas=deltas) is True: + return + except ValidationError as exc: + raise exc + except Exception as exc: + # Log the exception to the database + import InvenTree.exceptions + + InvenTree.exceptions.log_error( + f'plugins.{plugin.slug}.validate_model_instance' + ) + raise ValidationError(_('Error running plugin validation')) + + def full_clean(self, *args, **kwargs): + """Run plugin validation on full model clean. + + Note that plugin validation is performed *after* super.full_clean() + """ + super().full_clean(*args, **kwargs) + self.run_plugin_validation() + + def save(self, *args, **kwargs): + """Run plugin validation on model save. + + Note that plugin validation is performed *before* super.save() + """ + self.run_plugin_validation() + super().save(*args, **kwargs) class MetadataMixin(models.Model): @@ -377,7 +456,7 @@ class ReferenceIndexingMixin(models.Model): except Exception: pass - reference_int = extract_int(reference) + reference_int = InvenTree.helpers.extract_int(reference) if validate: if reference_int > models.BigIntegerField.MAX_BIGINT: @@ -388,52 +467,44 @@ class ReferenceIndexingMixin(models.Model): reference_int = models.BigIntegerField(default=0) -def extract_int(reference, clip=0x7FFFFFFF, allow_negative=False): - """Extract an integer out of reference.""" - # Default value if we cannot convert to an integer - ref_int = 0 +class InvenTreeModel(PluginValidationMixin, models.Model): + """Base class for InvenTree models, which provides some common functionality. - reference = str(reference).strip() + Includes the following mixins by default: - # Ignore empty string - if len(reference) == 0: - return 0 + - PluginValidationMixin: Provides a hook for plugins to validate model instances + """ - # Look at the start of the string - can it be "integerized"? - result = re.match(r'^(\d+)', reference) + class Meta: + """Metaclass options.""" - if result and len(result.groups()) == 1: - ref = result.groups()[0] - try: - ref_int = int(ref) - except Exception: - ref_int = 0 - else: - # Look at the "end" of the string - result = re.search(r'(\d+)$', reference) - - if result and len(result.groups()) == 1: - ref = result.groups()[0] - try: - ref_int = int(ref) - except Exception: - ref_int = 0 - - # Ensure that the returned values are within the range that can be stored in an IntegerField - # Note: This will result in large values being "clipped" - if clip is not None: - if ref_int > clip: - ref_int = clip - elif ref_int < -clip: - ref_int = -clip - - if not allow_negative and ref_int < 0: - ref_int = abs(ref_int) - - return ref_int + abstract = True -class InvenTreeAttachment(models.Model): +class InvenTreeMetadataModel(MetadataMixin, InvenTreeModel): + """Base class for an InvenTree model which includes a metadata field.""" + + class Meta: + """Metaclass options.""" + + abstract = True + + +def rename_attachment(instance, filename): + """Function for renaming an attachment file. The subdirectory for the uploaded file is determined by the implementing class. + + Args: + instance: Instance of a PartAttachment object + filename: name of uploaded file + + Returns: + path to store file, format: '//filename' + """ + # Construct a path to store a file attachment for a given model type + return os.path.join(instance.getSubdir(), filename) + + +class InvenTreeAttachment(InvenTreeModel): """Provides an abstracted class for managing file attachments. An attachment can be either an uploaded file, or an external URL @@ -615,7 +686,7 @@ class InvenTreeAttachment(models.Model): return '' -class InvenTreeTree(MPTTModel): +class InvenTreeTree(MetadataMixin, PluginValidationMixin, MPTTModel): """Provides an abstracted self-referencing tree model for data categories. - Each Category has one parent Category, which can be blank (for a top-level Category). diff --git a/InvenTree/InvenTree/permissions.py b/InvenTree/InvenTree/permissions.py index dee5e0256d..da472b8637 100644 --- a/InvenTree/InvenTree/permissions.py +++ b/InvenTree/InvenTree/permissions.py @@ -69,6 +69,10 @@ class RolePermission(permissions.BasePermission): # The required role may be defined for the view class if role := getattr(view, 'role_required', None): + # If the role is specified as "role.permission", split it + if '.' in role: + role, permission = role.split('.') + return users.models.check_user_role(user, role, permission) try: diff --git a/InvenTree/InvenTree/ready.py b/InvenTree/InvenTree/ready.py index 64161f1a7a..b8ebfb6e0a 100644 --- a/InvenTree/InvenTree/ready.py +++ b/InvenTree/InvenTree/ready.py @@ -10,13 +10,64 @@ def isInTestMode(): def isImportingData(): - """Returns True if the database is currently importing data, e.g. 'loaddata' command is performed.""" - return 'loaddata' in sys.argv + """Returns True if the database is currently importing (or exporting) data, e.g. 'loaddata' command is performed.""" + return any((x in sys.argv for x in ['flush', 'loaddata', 'dumpdata'])) def isRunningMigrations(): """Return True if the database is currently running migrations.""" - return any((x in sys.argv for x in ['migrate', 'makemigrations', 'showmigrations'])) + return any( + ( + x in sys.argv + for x in ['migrate', 'makemigrations', 'showmigrations', 'runmigrations'] + ) + ) + + +def isRebuildingData(): + """Return true if any of the rebuilding commands are being executed.""" + return any( + ( + x in sys.argv + for x in ['prerender', 'rebuild_models', 'rebuild_thumbnails', 'rebuild'] + ) + ) + + +def isRunningBackup(): + """Return true if any of the backup commands are being executed.""" + return any( + ( + x in sys.argv + for x in [ + 'backup', + 'restore', + 'dbbackup', + 'dbresotore', + 'mediabackup', + 'mediarestore', + ] + ) + ) + + +def isInWorkerThread(): + """Returns True if the current thread is a background worker thread.""" + return 'qcluster' in sys.argv + + +def isInServerThread(): + """Returns True if the current thread is a server thread.""" + if isInWorkerThread(): + return False + + if 'runserver' in sys.argv: + return True + + if 'gunicorn' in sys.argv[0]: + return True + + return False def isInMainThread(): @@ -28,7 +79,7 @@ def isInMainThread(): if 'runserver' in sys.argv and '--noreload' not in sys.argv: return os.environ.get('RUN_MAIN', None) == 'true' - return True + return not isInWorkerThread() def canAppAccessDatabase( @@ -39,26 +90,30 @@ def canAppAccessDatabase( There are some circumstances where we don't want the ready function in apps.py to touch the database """ + # Prevent database access if we are running backups + if isRunningBackup(): + return False + + # Prevent database access if we are importing data + if isImportingData(): + return False + + # Prevent database access if we are rebuilding data + if isRebuildingData(): + return False + + # Prevent database access if we are running migrations + if not allow_plugins and isRunningMigrations(): + return False + # If any of the following management commands are being executed, # prevent custom "on load" code from running! excluded_commands = [ - 'flush', - 'loaddata', - 'dumpdata', 'check', 'createsuperuser', 'wait_for_db', - 'prerender', - 'rebuild_models', - 'rebuild_thumbnails', 'makemessages', 'compilemessages', - 'backup', - 'dbbackup', - 'mediabackup', - 'restore', - 'dbrestore', - 'mediarestore', ] if not allow_shell: @@ -69,12 +124,7 @@ def canAppAccessDatabase( excluded_commands.append('test') if not allow_plugins: - excluded_commands.extend([ - 'makemigrations', - 'showmigrations', - 'migrate', - 'collectstatic', - ]) + excluded_commands.extend(['collectstatic']) for cmd in excluded_commands: if cmd in sys.argv: diff --git a/InvenTree/InvenTree/serializers.py b/InvenTree/InvenTree/serializers.py index 4f13ec9fac..4745647ea5 100644 --- a/InvenTree/InvenTree/serializers.py +++ b/InvenTree/InvenTree/serializers.py @@ -7,7 +7,6 @@ from decimal import Decimal from django.conf import settings from django.contrib.auth.models import User -from django.contrib.sites.models import Site from django.core.exceptions import ValidationError as DjangoValidationError from django.db import models from django.utils.translation import gettext_lazy as _ @@ -26,7 +25,10 @@ from taggit.serializers import TaggitSerializer import common.models as common_models from common.settings import currency_code_default, currency_code_mappings from InvenTree.fields import InvenTreeRestURLField, InvenTreeURLField -from InvenTree.helpers_model import download_image_from_url + + +class EmptySerializer(serializers.Serializer): + """Empty serializer for use in testing.""" class InvenTreeMoneySerializer(MoneyField): @@ -155,8 +157,15 @@ class DependentField(serializers.Field): # check if the request data contains the dependent fields, otherwise skip getting the child for f in self.depends_on: - if not data.get(f, None): - return + if data.get(f, None) is None: + if ( + self.parent + and (v := getattr(self.parent.fields[f], 'default', None)) + is not None + ): + data[f] = v + else: + return # partially validate the data for options requests that set raise_exception while calling .get_child(...) if raise_exception: @@ -445,19 +454,27 @@ class UserCreateSerializer(ExendedUserSerializer): def create(self, validated_data): """Send an e email to the user after creation.""" + from InvenTree.helpers_model import get_base_url + + base_url = get_base_url() + instance = super().create(validated_data) # Make sure the user cannot login until they have set a password instance.set_unusable_password() - # Send the user an onboarding email (from current site) - current_site = Site.objects.get_current() - domain = current_site.domain - instance.email_user( - subject=_(f'Welcome to {current_site.name}'), - message=_( - f'Your account has been created.\n\nPlease use the password reset function to get access (at https://{domain}).' - ), + + message = ( + _('Your account has been created.') + + '\n\n' + + _('Please use the password reset function to login') ) + + if base_url: + message += f'\n\nURL: {base_url}' + + # Send the user an onboarding email (from current site) + instance.email_user(subject=_('Welcome to InvenTree'), message=message) + return instance @@ -844,6 +861,8 @@ class RemoteImageMixin(metaclass=serializers.SerializerMetaclass): - Attempt to download the image and store it against this object instance - Catches and re-throws any errors """ + from InvenTree.helpers_model import download_image_from_url + if not url: return diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index f16ebaf6de..d425182a79 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -26,7 +26,6 @@ from dotenv import load_dotenv from InvenTree.config import get_boolean_setting, get_custom_file, get_setting from InvenTree.sentry import default_sentry_dsn, init_sentry -from InvenTree.tracing import setup_instruments, setup_tracing from InvenTree.version import checkMinPythonVersion, inventreeApiVersion from . import config, locales @@ -121,31 +120,6 @@ STATIC_ROOT = config.get_static_dir() # The filesystem location for uploaded meadia files MEDIA_ROOT = config.get_media_dir() -# List of allowed hosts (default = allow all) -ALLOWED_HOSTS = get_setting( - 'INVENTREE_ALLOWED_HOSTS', - config_key='allowed_hosts', - default_value=['*'], - typecast=list, -) - -# Cross Origin Resource Sharing (CORS) options - -# Only allow CORS access to API and media endpoints -CORS_URLS_REGEX = r'^/(api|media|static)/.*$' - -# Extract CORS options from configuration file -CORS_ORIGIN_ALLOW_ALL = get_boolean_setting( - 'INVENTREE_CORS_ORIGIN_ALLOW_ALL', config_key='cors.allow_all', default_value=False -) - -CORS_ORIGIN_WHITELIST = get_setting( - 'INVENTREE_CORS_ORIGIN_WHITELIST', - config_key='cors.whitelist', - default_value=[], - typecast=list, -) - # Needed for the parts importer, directly impacts the maximum parts that can be uploaded DATA_UPLOAD_MAX_NUMBER_FIELDS = 10000 @@ -214,6 +188,7 @@ INSTALLED_APPS = [ 'report.apps.ReportConfig', 'stock.apps.StockConfig', 'users.apps.UsersConfig', + 'machine.apps.MachineConfig', 'web', 'generic', 'InvenTree.apps.InvenTreeConfig', # InvenTree app runs last @@ -263,9 +238,9 @@ MIDDLEWARE = CONFIG.get( 'x_forwarded_for.middleware.XForwardedForMiddleware', 'user_sessions.middleware.SessionMiddleware', # db user sessions 'django.middleware.locale.LocaleMiddleware', - 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'corsheaders.middleware.CorsMiddleware', + 'django.middleware.common.CommonMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'InvenTree.middleware.InvenTreeRemoteUserMiddleware', # Remote / proxy auth 'django_otp.middleware.OTPMiddleware', # MFA support @@ -444,9 +419,9 @@ REST_FRAMEWORK = { 'EXCEPTION_HANDLER': 'InvenTree.exceptions.exception_handler', 'DATETIME_FORMAT': '%Y-%m-%d %H:%M', 'DEFAULT_AUTHENTICATION_CLASSES': ( + 'users.authentication.ApiTokenAuthentication', 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.SessionAuthentication', - 'users.authentication.ApiTokenAuthentication', ), 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', 'DEFAULT_PERMISSION_CLASSES': ( @@ -488,12 +463,15 @@ if USE_JWT: SPECTACULAR_SETTINGS = { 'TITLE': 'InvenTree API', 'DESCRIPTION': 'API for InvenTree - the intuitive open source inventory management system', - 'LICENSE': {'MIT': 'https://github.com/inventree/InvenTree/blob/master/LICENSE'}, - 'EXTERNAL_DOCS': { - 'docs': 'https://docs.inventree.org', - 'web': 'https://inventree.org', + 'LICENSE': { + 'name': 'MIT', + 'url': 'https://github.com/inventree/InvenTree/blob/master/LICENSE', }, - 'VERSION': inventreeApiVersion(), + 'EXTERNAL_DOCS': { + 'description': 'More information about InvenTree in the official docs', + 'url': 'https://docs.inventree.org', + }, + 'VERSION': str(inventreeApiVersion()), 'SERVE_INCLUDE_SCHEMA': False, } @@ -590,11 +568,6 @@ db_options = db_config.get('OPTIONS', db_config.get('options', {})) # Specific options for postgres backend if 'postgres' in db_engine: # pragma: no cover - from psycopg2.extensions import ( - ISOLATION_LEVEL_READ_COMMITTED, - ISOLATION_LEVEL_SERIALIZABLE, - ) - # Connection timeout if 'connect_timeout' not in db_options: # The DB server is in the same data center, it should not take very @@ -658,11 +631,7 @@ if 'postgres' in db_engine: # pragma: no cover serializable = get_boolean_setting( 'INVENTREE_DB_ISOLATION_SERIALIZABLE', 'database.serializable', False ) - db_options['isolation_level'] = ( - ISOLATION_LEVEL_SERIALIZABLE - if serializable - else ISOLATION_LEVEL_READ_COMMITTED - ) + db_options['isolation_level'] = 4 if serializable else 2 # Specific options for MySql / MariaDB backend elif 'mysql' in db_engine: # pragma: no cover @@ -738,7 +707,10 @@ if SENTRY_ENABLED and SENTRY_DSN: # pragma: no cover TRACING_ENABLED = get_boolean_setting( 'INVENTREE_TRACING_ENABLED', 'tracing.enabled', False ) + if TRACING_ENABLED: # pragma: no cover + from InvenTree.tracing import setup_instruments, setup_tracing + _t_endpoint = get_setting('INVENTREE_TRACING_ENDPOINT', 'tracing.endpoint', None) _t_headers = get_setting('INVENTREE_TRACING_HEADERS', 'tracing.headers', None, dict) @@ -820,7 +792,7 @@ Q_CLUSTER = { get_setting('INVENTREE_BACKGROUND_WORKERS', 'background.workers', 4) ), 'timeout': _q_worker_timeout, - 'retry': min(120, _q_worker_timeout + 30), + 'retry': max(120, _q_worker_timeout + 30), 'max_attempts': int( get_setting('INVENTREE_BACKGROUND_MAX_ATTEMPTS', 'background.max_attempts', 5) ), @@ -959,7 +931,6 @@ TIME_ZONE = get_setting('INVENTREE_TIMEZONE', 'timezone', 'UTC') USE_I18N = True -USE_L10N = True # Do not use native timezone support in "test" mode # It generates a *lot* of cruft in the logs @@ -974,13 +945,93 @@ CRISPY_TEMPLATE_PACK = 'bootstrap4' # Use database transactions when importing / exporting data IMPORT_EXPORT_USE_TRANSACTIONS = True -SITE_ID = 1 +# Site URL can be specified statically, or via a run-time setting +SITE_URL = get_setting('INVENTREE_SITE_URL', 'site_url', None) + +if SITE_URL: + logger.info('Using Site URL: %s', SITE_URL) + + # Check that the site URL is valid + validator = URLValidator() + validator(SITE_URL) + +# Enable or disable multi-site framework +SITE_MULTI = get_boolean_setting('INVENTREE_SITE_MULTI', 'site_multi', False) + +# If a SITE_ID is specified +SITE_ID = get_setting('INVENTREE_SITE_ID', 'site_id', 1 if SITE_MULTI else None) # Load the allauth social backends SOCIAL_BACKENDS = get_setting( 'INVENTREE_SOCIAL_BACKENDS', 'social_backends', [], typecast=list ) +if not SITE_MULTI: + INSTALLED_APPS.remove('django.contrib.sites') + +# List of allowed hosts (default = allow all) +# Ref: https://docs.djangoproject.com/en/4.2/ref/settings/#allowed-hosts +ALLOWED_HOSTS = get_setting( + 'INVENTREE_ALLOWED_HOSTS', + config_key='allowed_hosts', + default_value=['*'], + typecast=list, +) + +# List of trusted origins for unsafe requests +# Ref: https://docs.djangoproject.com/en/4.2/ref/settings/#csrf-trusted-origins +CSRF_TRUSTED_ORIGINS = get_setting( + 'INVENTREE_TRUSTED_ORIGINS', + config_key='trusted_origins', + default_value=[], + typecast=list, +) + +# If a list of trusted is not specified, but a site URL has been specified, use that +if SITE_URL and len(CSRF_TRUSTED_ORIGINS) == 0: + CSRF_TRUSTED_ORIGINS.append(SITE_URL) + +USE_X_FORWARDED_HOST = get_boolean_setting( + 'INVENTREE_USE_X_FORWARDED_HOST', + config_key='use_x_forwarded_host', + default_value=False, +) + +USE_X_FORWARDED_PORT = get_boolean_setting( + 'INVENTREE_USE_X_FORWARDED_PORT', + config_key='use_x_forwarded_port', + default_value=False, +) + +# Cross Origin Resource Sharing (CORS) options +# Refer to the django-cors-headers documentation for more information +# Ref: https://github.com/adamchainz/django-cors-headers + +# Extract CORS options from configuration file +CORS_ALLOW_ALL_ORIGINS = get_boolean_setting( + 'INVENTREE_CORS_ORIGIN_ALLOW_ALL', config_key='cors.allow_all', default_value=DEBUG +) + +CORS_ALLOW_CREDENTIALS = get_boolean_setting( + 'INVENTREE_CORS_ALLOW_CREDENTIALS', + config_key='cors.allow_credentials', + default_value=True, +) + +# Only allow CORS access to API and media endpoints +CORS_URLS_REGEX = r'^/(api|media|static)/.*$' + +CORS_ALLOWED_ORIGINS = get_setting( + 'INVENTREE_CORS_ORIGIN_WHITELIST', + config_key='cors.whitelist', + default_value=[], + typecast=list, +) + +# If no CORS origins are specified, but a site URL has been specified, use that +if SITE_URL and len(CORS_ALLOWED_ORIGINS) == 0: + CORS_ALLOWED_ORIGINS.append(SITE_URL) + for app in SOCIAL_BACKENDS: # Ensure that the app starts with 'allauth.socialaccount.providers' social_prefix = 'allauth.socialaccount.providers.' @@ -996,6 +1047,11 @@ SOCIALACCOUNT_PROVIDERS = get_setting( SOCIALACCOUNT_STORE_TOKENS = True +# Explicitly set empty URL prefix for OIDC +# The SOCIALACCOUNT_OPENID_CONNECT_URL_PREFIX setting was introduced in v0.60.0 +# Ref: https://github.com/pennersr/django-allauth/blob/0.60.0/ChangeLog.rst#backwards-incompatible-changes +SOCIALACCOUNT_OPENID_CONNECT_URL_PREFIX = '' + # settings for allauth ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = get_setting( 'INVENTREE_LOGIN_CONFIRM_DAYS', 'login_confirm_days', 3, typecast=int @@ -1064,8 +1120,8 @@ MARKDOWNIFY = { IGNORED_ERRORS = [Http404, django.core.exceptions.PermissionDenied] # Maintenance mode -MAINTENANCE_MODE_RETRY_AFTER = 60 -MAINTENANCE_MODE_STATE_BACKEND = 'maintenance_mode.backends.StaticStorageBackend' +MAINTENANCE_MODE_RETRY_AFTER = 10 +MAINTENANCE_MODE_STATE_BACKEND = 'InvenTree.backends.InvenTreeMaintenanceModeBackend' # Are plugins enabled? PLUGINS_ENABLED = get_boolean_setting( @@ -1087,16 +1143,6 @@ PLUGIN_RETRY = get_setting( ) # How often should plugin loading be tried? PLUGIN_FILE_CHECKED = False # Was the plugin file checked? -# Site URL can be specified statically, or via a run-time setting -SITE_URL = get_setting('INVENTREE_SITE_URL', 'site_url', None) - -if SITE_URL: - logger.info('Site URL: %s', SITE_URL) - - # Check that the site URL is valid - validator = URLValidator() - validator(SITE_URL) - # User interface customization values CUSTOM_LOGO = get_custom_file( 'INVENTREE_CUSTOM_LOGO', 'customize.logo', 'custom logo', lookup_media=True @@ -1139,5 +1185,4 @@ if CUSTOM_FLAGS: # Magic login django-sesame SESAME_MAX_AGE = 300 -# LOGIN_REDIRECT_URL = f"/{FRONTEND_URL_BASE}/logged-in/" -LOGIN_REDIRECT_URL = '/index/' +LOGIN_REDIRECT_URL = '/api/auth/login-redirect/' diff --git a/InvenTree/InvenTree/social_auth_urls.py b/InvenTree/InvenTree/social_auth_urls.py index 6613c2e67c..c9a77eb5df 100644 --- a/InvenTree/InvenTree/social_auth_urls.py +++ b/InvenTree/InvenTree/social_auth_urls.py @@ -9,6 +9,7 @@ from allauth.account.models import EmailAddress from allauth.socialaccount import providers from allauth.socialaccount.providers.oauth2.views import OAuth2Adapter, OAuth2LoginView from drf_spectacular.utils import OpenApiResponse, extend_schema +from rest_framework import serializers from rest_framework.exceptions import NotFound from rest_framework.permissions import AllowAny, IsAuthenticated from rest_framework.response import Response @@ -16,7 +17,7 @@ from rest_framework.response import Response import InvenTree.sso from common.models import InvenTreeSetting from InvenTree.mixins import CreateAPI, ListAPI, ListCreateAPI -from InvenTree.serializers import InvenTreeModelSerializer +from InvenTree.serializers import EmptySerializer, InvenTreeModelSerializer logger = logging.getLogger('inventree') @@ -112,11 +113,36 @@ for name, provider in providers.registry.provider_map.items(): social_auth_urlpatterns += provider_urlpatterns +class SocialProviderListResponseSerializer(serializers.Serializer): + """Serializer for the SocialProviderListView.""" + + class SocialProvider(serializers.Serializer): + """Serializer for the SocialProviderListResponseSerializer.""" + + id = serializers.CharField() + name = serializers.CharField() + configured = serializers.BooleanField() + login = serializers.URLField() + connect = serializers.URLField() + display_name = serializers.CharField() + + sso_enabled = serializers.BooleanField() + sso_registration = serializers.BooleanField() + mfa_required = serializers.BooleanField() + providers = SocialProvider(many=True) + registration_enabled = serializers.BooleanField() + password_forgotten_enabled = serializers.BooleanField() + + class SocialProviderListView(ListAPI): """List of available social providers.""" permission_classes = (AllowAny,) + serializer_class = EmptySerializer + @extend_schema( + responses={200: OpenApiResponse(response=SocialProviderListResponseSerializer)} + ) def get(self, request, *args, **kwargs): """Get the list of providers.""" provider_list = [] @@ -153,6 +179,10 @@ class SocialProviderListView(ListAPI): 'sso_registration': InvenTree.sso.registration_enabled(), 'mfa_required': InvenTreeSetting.get_setting('LOGIN_ENFORCE_MFA'), 'providers': provider_list, + 'registration_enabled': InvenTreeSetting.get_setting('LOGIN_ENABLE_REG'), + 'password_forgotten_enabled': InvenTreeSetting.get_setting( + 'LOGIN_ENABLE_PWD_FORGOT' + ), } return Response(data) diff --git a/InvenTree/InvenTree/tasks.py b/InvenTree/InvenTree/tasks.py index 05731dc60e..036ac98796 100644 --- a/InvenTree/InvenTree/tasks.py +++ b/InvenTree/InvenTree/tasks.py @@ -9,7 +9,7 @@ import time import warnings from dataclasses import dataclass from datetime import datetime, timedelta -from typing import Callable, List +from typing import Callable from django.conf import settings from django.core.exceptions import AppRegistryNotReady @@ -291,7 +291,7 @@ class ScheduledTask: class TaskRegister: """Registry for periodic tasks.""" - task_list: List[ScheduledTask] = [] + task_list: list[ScheduledTask] = [] def register(self, task, schedule, minutes: int = None): """Register a task with the que.""" @@ -644,7 +644,7 @@ def get_migration_plan(): @scheduled_task(ScheduledTask.DAILY) -def check_for_migrations(): +def check_for_migrations(force: bool = False, reload_registry: bool = True): """Checks if migrations are needed. If the setting auto_update is enabled we will start updating. @@ -659,8 +659,9 @@ def check_for_migrations(): logger.info('Checking for pending database migrations') - # Force plugin registry reload - registry.check_reload() + if reload_registry: + # Force plugin registry reload + registry.check_reload() plan = get_migration_plan() @@ -674,7 +675,7 @@ def check_for_migrations(): set_pending_migrations(n) # Test if auto-updates are enabled - if not get_setting('INVENTREE_AUTO_UPDATE', 'auto_update'): + if not force and not get_setting('INVENTREE_AUTO_UPDATE', 'auto_update'): logger.info('Auto-update is disabled - skipping migrations') return @@ -706,6 +707,7 @@ def check_for_migrations(): set_maintenance_mode(False) logger.info('Manually released maintenance mode') - # We should be current now - triggering full reload to make sure all models - # are loaded fully in their new state. - registry.reload_plugins(full_reload=True, force_reload=True, collect=True) + if reload_registry: + # We should be current now - triggering full reload to make sure all models + # are loaded fully in their new state. + registry.reload_plugins(full_reload=True, force_reload=True, collect=True) diff --git a/InvenTree/InvenTree/templatetags/i18n.py b/InvenTree/InvenTree/templatetags/i18n.py index fffaa352c2..6aaa7213a6 100644 --- a/InvenTree/InvenTree/templatetags/i18n.py +++ b/InvenTree/InvenTree/templatetags/i18n.py @@ -52,7 +52,18 @@ class CustomTranslateNode(TranslateNode): # Escape any quotes contained in the string, if the request is for a javascript file request = context.get('request', None) - if self.escape or (request and request.path.endswith('.js')): + template = getattr(context, 'template_name', None) + request = context.get('request', None) + + escape = self.escape + + if template and str(template).endswith('.js'): + escape = True + + if request and str(request.path).endswith('.js'): + escape = True + + if escape: result = result.replace("'", r'\'') result = result.replace('"', r'\"') diff --git a/InvenTree/InvenTree/templatetags/inventree_extras.py b/InvenTree/InvenTree/templatetags/inventree_extras.py index 4b1b0c88cd..3c37fce6e6 100644 --- a/InvenTree/InvenTree/templatetags/inventree_extras.py +++ b/InvenTree/InvenTree/templatetags/inventree_extras.py @@ -334,7 +334,10 @@ def setting_object(key, *args, **kwargs): plg = kwargs['plugin'] if issubclass(plg.__class__, InvenTreePlugin): - plg = plg.plugin_config() + try: + plg = plg.plugin_config() + except plugin.models.PluginConfig.DoesNotExist: + return None return plugin.models.PluginSetting.get_setting_object( key, plugin=plg, cache=cache diff --git a/InvenTree/InvenTree/test_api.py b/InvenTree/InvenTree/test_api.py index aefe27cfec..58e18df2e5 100644 --- a/InvenTree/InvenTree/test_api.py +++ b/InvenTree/InvenTree/test_api.py @@ -25,7 +25,7 @@ class HTMLAPITests(InvenTreeTestCase): url = reverse('api-part-list') # Check JSON response - response = self.client.get(url, HTTP_ACCEPT='application/json') + response = self.client.get(url, headers={'accept': 'application/json'}) self.assertEqual(response.status_code, 200) def test_build_api(self): @@ -33,7 +33,7 @@ class HTMLAPITests(InvenTreeTestCase): url = reverse('api-build-list') # Check JSON response - response = self.client.get(url, HTTP_ACCEPT='application/json') + response = self.client.get(url, headers={'accept': 'application/json'}) self.assertEqual(response.status_code, 200) def test_stock_api(self): @@ -41,7 +41,7 @@ class HTMLAPITests(InvenTreeTestCase): url = reverse('api-stock-list') # Check JSON response - response = self.client.get(url, HTTP_ACCEPT='application/json') + response = self.client.get(url, headers={'accept': 'application/json'}) self.assertEqual(response.status_code, 200) def test_company_list(self): @@ -49,7 +49,7 @@ class HTMLAPITests(InvenTreeTestCase): url = reverse('api-company-list') # Check JSON response - response = self.client.get(url, HTTP_ACCEPT='application/json') + response = self.client.get(url, headers={'accept': 'application/json'}) self.assertEqual(response.status_code, 200) def test_not_found(self): diff --git a/InvenTree/InvenTree/test_api_version.py b/InvenTree/InvenTree/test_api_version.py index 4b2a3b49b5..8bddb0c561 100644 --- a/InvenTree/InvenTree/test_api_version.py +++ b/InvenTree/InvenTree/test_api_version.py @@ -18,6 +18,11 @@ class ApiVersionTests(InvenTreeAPITestCase): self.assertEqual(len(data), 10) + response = self.client.get(reverse('api-version'), format='json').json() + self.assertIn('version', response) + self.assertIn('dev', response) + self.assertIn('up_to_date', response) + def test_inventree_api_text(self): """Test that the inventreeApiText function works expected.""" # Normal run diff --git a/InvenTree/InvenTree/test_middleware.py b/InvenTree/InvenTree/test_middleware.py index f750a339b2..8f091f34da 100644 --- a/InvenTree/InvenTree/test_middleware.py +++ b/InvenTree/InvenTree/test_middleware.py @@ -15,7 +15,9 @@ class MiddlewareTests(InvenTreeTestCase): def check_path(self, url, code=200, **kwargs): """Helper function to run a request.""" - response = self.client.get(url, HTTP_ACCEPT='application/json', **kwargs) + response = self.client.get( + url, headers={'accept': 'application/json'}, **kwargs + ) self.assertEqual(response.status_code, code) return response diff --git a/InvenTree/InvenTree/tests.py b/InvenTree/InvenTree/tests.py index a054185075..f623bdf4c3 100644 --- a/InvenTree/InvenTree/tests.py +++ b/InvenTree/InvenTree/tests.py @@ -10,7 +10,6 @@ from unittest import mock import django.core.exceptions as django_exceptions from django.conf import settings from django.contrib.auth import get_user_model -from django.contrib.sites.models import Site from django.core import mail from django.core.exceptions import ValidationError from django.test import TestCase, override_settings @@ -20,6 +19,7 @@ import pint.errors from djmoney.contrib.exchange.exceptions import MissingRate from djmoney.contrib.exchange.models import Rate, convert_money from djmoney.money import Money +from maintenance_mode.core import get_maintenance_mode, set_maintenance_mode from sesame.utils import get_user import InvenTree.conversion @@ -29,6 +29,7 @@ import InvenTree.helpers_model import InvenTree.tasks from common.models import CustomUnit, InvenTreeSetting from common.settings import currency_codes +from InvenTree.helpers_mixin import ClassProviderMixin, ClassValidationMixin from InvenTree.sanitizer import sanitize_svg from InvenTree.unit_test import InvenTreeTestCase from part.models import Part, PartCategory @@ -372,7 +373,7 @@ class TestHelpers(TestCase): for url, expected in tests.items(): # Test with supplied base URL self.assertEqual( - InvenTree.helpers_model.construct_absolute_url(url, site_url=base), + InvenTree.helpers_model.construct_absolute_url(url, base_url=base), expected, ) @@ -508,6 +509,20 @@ class TestHelpers(TestCase): self.assertNotIn(PartCategory, models) self.assertNotIn(InvenTreeSetting, models) + def test_test_key(self): + """Test for the generateTestKey function.""" + tests = { + ' Hello World ': 'helloworld', + ' MY NEW TEST KEY ': 'mynewtestkey', + ' 1234 5678': '_12345678', + ' 100 percenT': '_100percent', + ' MY_NEW_TEST': 'my_new_test', + ' 100_new_tests': '_100_new_tests', + } + + for name, key in tests.items(): + self.assertEqual(helpers.generateTestKey(name), key) + class TestQuoteWrap(TestCase): """Tests for string wrapping.""" @@ -1049,6 +1064,12 @@ class TestInstanceName(InvenTreeTestCase): self.assertEqual(version.inventreeInstanceTitle(), 'Testing title') + try: + from django.contrib.sites.models import Site + except (ImportError, RuntimeError): + # Multi-site support not enabled + return + # The site should also be changed site_obj = Site.objects.all().order_by('id').first() self.assertEqual(site_obj.name, 'Testing title') @@ -1060,9 +1081,18 @@ class TestInstanceName(InvenTreeTestCase): 'INVENTREE_BASE_URL', 'http://127.1.2.3', self.user ) + # No further tests if multi-site support is not enabled + if not settings.SITE_MULTI: + return + # The site should also be changed - site_obj = Site.objects.all().order_by('id').first() - self.assertEqual(site_obj.domain, 'http://127.1.2.3') + try: + from django.contrib.sites.models import Site + + site_obj = Site.objects.all().order_by('id').first() + self.assertEqual(site_obj.domain, 'http://127.1.2.3') + except Exception: + pass class TestOffloadTask(InvenTreeTestCase): @@ -1234,7 +1264,7 @@ class MagicLoginTest(InvenTreeTestCase): self.assertEqual(resp.status_code, 200) self.assertEqual(resp.data, {'status': 'ok'}) self.assertEqual(len(mail.outbox), 1) - self.assertEqual(mail.outbox[0].subject, '[example.com] Log in to the app') + self.assertEqual(mail.outbox[0].subject, '[InvenTree] Log in to the app') # Check that the token is in the email self.assertTrue('http://testserver/api/email/login/' in mail.outbox[0].body) @@ -1247,9 +1277,153 @@ class MagicLoginTest(InvenTreeTestCase): # Check that the login works resp = self.client.get(reverse('sesame-login') + '?sesame=' + token) self.assertEqual(resp.status_code, 302) - self.assertEqual(resp.url, '/index/') - # Note: 2023-08-08 - This test has been changed because "platform UI" is not generally available yet - # TODO: In the future, the URL comparison will need to be reverted - # self.assertEqual(resp.url, f'/{settings.FRONTEND_URL_BASE}/logged-in/') + self.assertEqual(resp.url, '/api/auth/login-redirect/') # And we should be logged in again self.assertEqual(resp.wsgi_request.user, self.user) + + +class MaintenanceModeTest(InvenTreeTestCase): + """Unit tests for maintenance mode.""" + + def test_basic(self): + """Test basic maintenance mode operation.""" + for value in [False, True, False]: + set_maintenance_mode(value) + self.assertEqual(get_maintenance_mode(), value) + + # API request is blocked in maintenance mode + set_maintenance_mode(True) + + response = self.client.get('/api/') + self.assertEqual(response.status_code, 503) + + set_maintenance_mode(False) + + response = self.client.get('/api/') + self.assertEqual(response.status_code, 200) + + def test_timestamp(self): + """Test that the timestamp value is interpreted correctly.""" + KEY = '_MAINTENANCE_MODE' + + # Deleting the setting means maintenance mode is off + InvenTreeSetting.objects.filter(key=KEY).delete() + + self.assertFalse(get_maintenance_mode()) + + def set_timestamp(value): + InvenTreeSetting.set_setting(KEY, value, None) + + # Test blank value + set_timestamp('') + self.assertFalse(get_maintenance_mode()) + + # Test timestamp in the past + ts = datetime.now() - timedelta(minutes=10) + set_timestamp(ts.isoformat()) + self.assertFalse(get_maintenance_mode()) + + # Test timestamp in the future + ts = datetime.now() + timedelta(minutes=10) + set_timestamp(ts.isoformat()) + self.assertTrue(get_maintenance_mode()) + + # Set to false, check for empty string + set_maintenance_mode(False) + self.assertFalse(get_maintenance_mode()) + self.assertEqual(InvenTreeSetting.get_setting(KEY, None), '') + + +class ClassValidationMixinTest(TestCase): + """Tests for the ClassValidationMixin class.""" + + class BaseTestClass(ClassValidationMixin): + """A valid class that inherits from ClassValidationMixin.""" + + NAME: str + + def test(self): + """Test function.""" + pass + + def test1(self): + """Test function.""" + pass + + def test2(self): + """Test function.""" + pass + + required_attributes = ['NAME'] + required_overrides = [test, [test1, test2]] + + class InvalidClass: + """An invalid class that does not inherit from ClassValidationMixin.""" + + pass + + def test_valid_class(self): + """Test that a valid class passes the validation.""" + + class TestClass(self.BaseTestClass): + """A valid class that inherits from BaseTestClass.""" + + NAME = 'Test' + + def test(self): + """Test function.""" + pass + + def test2(self): + """Test function.""" + pass + + TestClass.validate() + + def test_invalid_class(self): + """Test that an invalid class fails the validation.""" + + class TestClass1(self.BaseTestClass): + """A bad class that inherits from BaseTestClass.""" + + with self.assertRaisesRegex( + NotImplementedError, + r'\'<.*TestClass1\'>\' did not provide the following attributes: NAME and did not override the required attributes: test, one of test1 or test2', + ): + TestClass1.validate() + + class TestClass2(self.BaseTestClass): + """A bad class that inherits from BaseTestClass.""" + + NAME = 'Test' + + def test2(self): + """Test function.""" + pass + + with self.assertRaisesRegex( + NotImplementedError, + r'\'<.*TestClass2\'>\' did not override the required attributes: test', + ): + TestClass2.validate() + + +class ClassProviderMixinTest(TestCase): + """Tests for the ClassProviderMixin class.""" + + class TestClass(ClassProviderMixin): + """This class is a dummy class to test the ClassProviderMixin.""" + + pass + + def test_get_provider_file(self): + """Test the get_provider_file function.""" + self.assertEqual(self.TestClass.get_provider_file(), __file__) + + def test_provider_plugin(self): + """Test the provider_plugin function.""" + self.assertEqual(self.TestClass.get_provider_plugin(), None) + + def test_get_is_builtin(self): + """Test the get_is_builtin function.""" + self.assertTrue(self.TestClass.get_is_builtin()) diff --git a/InvenTree/InvenTree/tracing.py b/InvenTree/InvenTree/tracing.py index b14dcc4a0d..3d3eda28a3 100644 --- a/InvenTree/InvenTree/tracing.py +++ b/InvenTree/InvenTree/tracing.py @@ -19,6 +19,7 @@ from opentelemetry.sdk.metrics.export import ( from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter +import InvenTree.ready from InvenTree.version import inventreeVersion # Logger configuration @@ -42,6 +43,9 @@ def setup_tracing( resources_input: The resources to send with the traces. console: Whether to output the traces to the console. """ + if InvenTree.ready.isImportingData() or InvenTree.ready.isRunningMigrations(): + return + if resources_input is None: resources_input = {} if auth is None: diff --git a/InvenTree/InvenTree/urls.py b/InvenTree/InvenTree/urls.py index 547764cf5d..4711bc1652 100644 --- a/InvenTree/InvenTree/urls.py +++ b/InvenTree/InvenTree/urls.py @@ -22,6 +22,7 @@ import build.api import common.api import company.api import label.api +import machine.api import order.api import part.api import plugin.api @@ -35,6 +36,7 @@ from order.urls import order_urls from part.urls import part_urls from plugin.urls import get_plugin_urls from stock.urls import stock_urls +from web.urls import api_urls as web_api_urls from web.urls import urlpatterns as platform_urls from .api import APISearchView, InfoView, NotFoundView, VersionTextView, VersionView @@ -82,8 +84,10 @@ apipatterns = [ path('order/', include(order.api.order_api_urls)), path('label/', include(label.api.label_api_urls)), path('report/', include(report.api.report_api_urls)), + path('machine/', include(machine.api.machine_api_urls)), path('user/', include(users.api.user_urls)), path('admin/', include(common.api.admin_api_urls)), + path('web/', include(web_api_urls)), # Plugin endpoints path('', include(plugin.api.plugin_api_urls)), # Common endpoints endpoint @@ -148,6 +152,12 @@ apipatterns = [ SocialAccountDisconnectView.as_view(), name='social_account_disconnect', ), + path('logout/', users.api.Logout.as_view(), name='api-logout'), + path( + 'login-redirect/', + users.api.LoginRedirect.as_view(), + name='api-login-redirect', + ), path('', include('dj_rest_auth.urls')), ]), ), diff --git a/InvenTree/build/admin.py b/InvenTree/build/admin.py index fb99a898d9..b3d14c6ec6 100644 --- a/InvenTree/build/admin.py +++ b/InvenTree/build/admin.py @@ -51,6 +51,7 @@ class BuildResource(InvenTreeResource): notes = Field(attribute='notes') +@admin.register(Build) class BuildAdmin(ImportExportModelAdmin): """Class for managing the Build model via the admin interface""" @@ -83,6 +84,7 @@ class BuildAdmin(ImportExportModelAdmin): ] +@admin.register(BuildItem) class BuildItemAdmin(admin.ModelAdmin): """Class for managing the BuildItem model via the admin interface.""" @@ -98,6 +100,7 @@ class BuildItemAdmin(admin.ModelAdmin): ] +@admin.register(BuildLine) class BuildLineAdmin(admin.ModelAdmin): """Class for managing the BuildLine model via the admin interface""" @@ -112,8 +115,3 @@ class BuildLineAdmin(admin.ModelAdmin): 'build__reference', 'bom_item__sub_part__name', ] - - -admin.site.register(Build, BuildAdmin) -admin.site.register(BuildItem, BuildItemAdmin) -admin.site.register(BuildLine, BuildLineAdmin) diff --git a/InvenTree/build/migrations/0013_auto_20200425_0507.py b/InvenTree/build/migrations/0013_auto_20200425_0507.py index 4468b9aca5..15be35eea6 100644 --- a/InvenTree/build/migrations/0013_auto_20200425_0507.py +++ b/InvenTree/build/migrations/0013_auto_20200425_0507.py @@ -3,12 +3,6 @@ from django.db import migrations, models import django.db.models.deletion import mptt.fields -from build.models import Build - - -def update_tree(apps, schema_editor): - # Update the Build MPTT model - Build.objects.rebuild() class Migration(migrations.Migration): @@ -49,5 +43,4 @@ class Migration(migrations.Migration): field=models.PositiveIntegerField(db_index=True, default=0, editable=False), preserve_default=False, ), - migrations.RunPython(update_tree, reverse_code=migrations.RunPython.noop), ] diff --git a/InvenTree/build/migrations/0029_auto_20210601_1525.py b/InvenTree/build/migrations/0029_auto_20210601_1525.py index 68b1f098e1..3c98b504df 100644 --- a/InvenTree/build/migrations/0029_auto_20210601_1525.py +++ b/InvenTree/build/migrations/0029_auto_20210601_1525.py @@ -57,6 +57,4 @@ class Migration(migrations.Migration): ('build', '0028_builditem_bom_item'), ] - operations = [ - migrations.RunPython(assign_bom_items, reverse_code=migrations.RunPython.noop), - ] + operations = [] diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index 7c6b9c6bac..72f87e87fc 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -28,7 +28,6 @@ from build.validators import generate_next_build_reference, validate_build_order import InvenTree.fields import InvenTree.helpers import InvenTree.helpers_model -import InvenTree.mixins import InvenTree.models import InvenTree.ready import InvenTree.tasks @@ -45,7 +44,7 @@ import users.models logger = logging.getLogger('inventree') -class Build(MPTTModel, InvenTree.mixins.DiffMixin, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNotesMixin, InvenTree.models.MetadataMixin, InvenTree.models.ReferenceIndexingMixin): +class Build(InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNotesMixin, InvenTree.models.MetadataMixin, InvenTree.models.PluginValidationMixin, InvenTree.models.ReferenceIndexingMixin, MPTTModel): """A Build object organises the creation of new StockItem objects from other existing StockItem objects. Attributes: @@ -916,6 +915,11 @@ class Build(MPTTModel, InvenTree.mixins.DiffMixin, InvenTree.models.InvenTreeBar # List the allocated BuildItem objects for the given output allocated_items = output.items_to_install.all() + if (common.settings.prevent_build_output_complete_on_incompleted_tests() and output.hasRequiredTests() and not output.passedAllRequiredTests()): + serial = output.serial + raise ValidationError( + _(f"Build output {serial} has not passed all required tests")) + for build_item in allocated_items: # Complete the allocation of stock for that item build_item.complete_allocation(user) @@ -1247,7 +1251,7 @@ class BuildOrderAttachment(InvenTree.models.InvenTreeAttachment): build = models.ForeignKey(Build, on_delete=models.CASCADE, related_name='attachments') -class BuildLine(models.Model): +class BuildLine(InvenTree.models.InvenTreeModel): """A BuildLine object links a BOMItem to a Build. When a new Build is created, the BuildLine objects are created automatically. @@ -1326,7 +1330,7 @@ class BuildLine(models.Model): return self.allocated_quantity() > self.quantity -class BuildItem(InvenTree.models.MetadataMixin, models.Model): +class BuildItem(InvenTree.models.InvenTreeMetadataModel): """A BuildItem links multiple StockItem objects to a Build. These are used to allocate part stock to a build. Once the Build is completed, the parts are removed from stock and the BuildItemAllocation objects are removed. diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index 337c00452d..e02e5b5e32 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -1,5 +1,7 @@ """JSON serializers for Build API.""" +from decimal import Decimal + from django.db import transaction from django.core.exceptions import ValidationError as DjangoValidationError from django.utils.translation import gettext_lazy as _ @@ -7,22 +9,25 @@ from django.utils.translation import gettext_lazy as _ from django.db import models from django.db.models import ExpressionWrapper, F, FloatField from django.db.models import Case, Sum, When, Value -from django.db.models import BooleanField +from django.db.models import BooleanField, Q from django.db.models.functions import Coalesce from rest_framework import serializers from rest_framework.serializers import ValidationError +from sql_util.utils import SubquerySum + from InvenTree.serializers import InvenTreeModelSerializer, InvenTreeAttachmentSerializer from InvenTree.serializers import UserSerializer import InvenTree.helpers from InvenTree.serializers import InvenTreeDecimalField -from InvenTree.status_codes import StockStatus +from InvenTree.status_codes import BuildStatusGroups, StockStatus from stock.models import generate_batch_code, StockItem, StockLocation from stock.serializers import StockItemSerializerBrief, LocationSerializer +import common.models from common.serializers import ProjectCodeSerializer import part.filters from part.serializers import BomItemSerializer, PartSerializer, PartBriefSerializer @@ -519,6 +524,17 @@ class BuildOutputCompleteSerializer(serializers.Serializer): outputs = data.get('outputs', []) + if common.settings.prevent_build_output_complete_on_incompleted_tests(): + errors = [] + for output in outputs: + stock_item = output['output'] + if stock_item.hasRequiredTests() and not stock_item.passedAllRequiredTests(): + serial = stock_item.serial + errors.append(_(f"Build output {serial} has not passed all required tests")) + + if errors: + raise ValidationError(errors) + if len(outputs) == 0: raise ValidationError(_("A list of build outputs must be provided")) @@ -1019,7 +1035,7 @@ class BuildItemSerializer(InvenTreeModelSerializer): """Determine which extra details fields should be included""" part_detail = kwargs.pop('part_detail', True) location_detail = kwargs.pop('location_detail', True) - stock_detail = kwargs.pop('stock_detail', False) + stock_detail = kwargs.pop('stock_detail', True) build_detail = kwargs.pop('build_detail', False) super().__init__(*args, **kwargs) @@ -1055,6 +1071,7 @@ class BuildLineSerializer(InvenTreeModelSerializer): # Annotated fields 'allocated', + 'in_production', 'on_order', 'available_stock', 'available_substitute_stock', @@ -1070,15 +1087,34 @@ class BuildLineSerializer(InvenTreeModelSerializer): quantity = serializers.FloatField() + bom_item = serializers.PrimaryKeyRelatedField(label=_('BOM Item'), read_only=True) + # Foreign key fields bom_item_detail = BomItemSerializer(source='bom_item', many=False, read_only=True, pricing=False) part_detail = PartSerializer(source='bom_item.sub_part', many=False, read_only=True, pricing=False) allocations = BuildItemSerializer(many=True, read_only=True) # Annotated (calculated) fields - allocated = serializers.FloatField(read_only=True) - on_order = serializers.FloatField(read_only=True) - available_stock = serializers.FloatField(read_only=True) + allocated = serializers.FloatField( + label=_('Allocated Stock'), + read_only=True + ) + + on_order = serializers.FloatField( + label=_('On Order'), + read_only=True + ) + + in_production = serializers.FloatField( + label=_('In Production'), + read_only=True + ) + + available_stock = serializers.FloatField( + label=_('Available Stock'), + read_only=True + ) + available_substitute_stock = serializers.FloatField(read_only=True) available_variant_stock = serializers.FloatField(read_only=True) total_available_stock = serializers.FloatField(read_only=True) @@ -1090,6 +1126,7 @@ class BuildLineSerializer(InvenTreeModelSerializer): - allocated: Total stock quantity allocated against this build line - available: Total stock available for allocation against this build line - on_order: Total stock on order for this build line + - in_production: Total stock currently in production for this build line """ queryset = queryset.select_related( 'build', 'bom_item', @@ -1126,6 +1163,11 @@ class BuildLineSerializer(InvenTreeModelSerializer): ref = 'bom_item__sub_part__' + # Annotate the "in_production" quantity + queryset = queryset.annotate( + in_production=part.filters.annotate_in_production_quantity(reference=ref) + ) + # Annotate the "on_order" quantity # Difficulty: Medium queryset = queryset.annotate( diff --git a/InvenTree/build/templates/build/detail.html b/InvenTree/build/templates/build/detail.html index ffde5c2878..19438e70f5 100644 --- a/InvenTree/build/templates/build/detail.html +++ b/InvenTree/build/templates/build/detail.html @@ -373,7 +373,11 @@ onPanelLoad('allocate', function() { loadBuildLineTable( "#build-lines-table", {{ build.pk }}, - {} + { + {% if build.project_code %} + project_code: {{ build.project_code.pk }}, + {% endif %} + } ); }); diff --git a/InvenTree/build/test_build.py b/InvenTree/build/test_build.py index 0961e0329d..fd4fe9975f 100644 --- a/InvenTree/build/test_build.py +++ b/InvenTree/build/test_build.py @@ -1,5 +1,5 @@ """Unit tests for the 'build' models""" - +import uuid from datetime import datetime, timedelta from django.test import TestCase @@ -14,8 +14,8 @@ from InvenTree import status_codes as status import common.models import build.tasks from build.models import Build, BuildItem, BuildLine, generate_next_build_reference -from part.models import Part, BomItem, BomItemSubstitute -from stock.models import StockItem +from part.models import Part, BomItem, BomItemSubstitute, PartTestTemplate +from stock.models import StockItem, StockItemTestResult from users.models import Owner import logging @@ -55,6 +55,76 @@ class BuildTestBase(TestCase): trackable=True, ) + # create one build with one required test template + cls.tested_part_with_required_test = Part.objects.create( + name="Part having required tests", + description="Why does it matter what my description is?", + assembly=True, + trackable=True, + ) + + cls.test_template_required = PartTestTemplate.objects.create( + part=cls.tested_part_with_required_test, + test_name="Required test", + description="Required test template description", + required=True, + requires_value=False, + requires_attachment=False + ) + + ref = generate_next_build_reference() + + cls.build_w_tests_trackable = Build.objects.create( + reference=ref, + title="This is a build", + part=cls.tested_part_with_required_test, + quantity=1, + issued_by=get_user_model().objects.get(pk=1), + ) + + cls.stockitem_with_required_test = StockItem.objects.create( + part=cls.tested_part_with_required_test, + quantity=1, + is_building=True, + serial=uuid.uuid4(), + build=cls.build_w_tests_trackable + ) + + # now create a part with a non-required test template + cls.tested_part_wo_required_test = Part.objects.create( + name="Part with one non.required test", + description="Why does it matter what my description is?", + assembly=True, + trackable=True, + ) + + cls.test_template_non_required = PartTestTemplate.objects.create( + part=cls.tested_part_wo_required_test, + test_name="Required test template", + description="Required test template description", + required=False, + requires_value=False, + requires_attachment=False + ) + + ref = generate_next_build_reference() + + cls.build_wo_tests_trackable = Build.objects.create( + reference=ref, + title="This is a build", + part=cls.tested_part_wo_required_test, + quantity=1, + issued_by=get_user_model().objects.get(pk=1), + ) + + cls.stockitem_wo_required_test = StockItem.objects.create( + part=cls.tested_part_wo_required_test, + quantity=1, + is_building=True, + serial=uuid.uuid4(), + build=cls.build_wo_tests_trackable + ) + cls.sub_part_1 = Part.objects.create( name="Widget A", description="A widget", @@ -245,7 +315,7 @@ class BuildTest(BuildTestBase): def test_init(self): """Perform some basic tests before we start the ball rolling""" - self.assertEqual(StockItem.objects.count(), 10) + self.assertEqual(StockItem.objects.count(), 12) # Build is PENDING self.assertEqual(self.build.status, status.BuildStatus.PENDING) @@ -558,7 +628,7 @@ class BuildTest(BuildTestBase): self.assertEqual(BuildItem.objects.count(), 0) # New stock items should have been created! - self.assertEqual(StockItem.objects.count(), 13) + self.assertEqual(StockItem.objects.count(), 15) # This stock item has been marked as "consumed" item = StockItem.objects.get(pk=self.stock_1_1.pk) @@ -573,6 +643,27 @@ class BuildTest(BuildTestBase): for output in outputs: self.assertFalse(output.is_building) + def test_complete_with_required_tests(self): + """Test the prevention completion when a required test is missing feature""" + + # with required tests incompleted the save should fail + common.models.InvenTreeSetting.set_setting('PREVENT_BUILD_COMPLETION_HAVING_INCOMPLETED_TESTS', True, change_user=None) + + with self.assertRaises(ValidationError): + self.build_w_tests_trackable.complete_build_output(self.stockitem_with_required_test, None) + + # let's complete the required test and see if it could be saved + StockItemTestResult.objects.create( + stock_item=self.stockitem_with_required_test, + template=self.test_template_required, + result=True + ) + + self.build_w_tests_trackable.complete_build_output(self.stockitem_with_required_test, None) + + # let's see if a non required test could be saved + self.build_wo_tests_trackable.complete_build_output(self.stockitem_wo_required_test, None) + def test_overdue_notification(self): """Test sending of notifications when a build order is overdue.""" self.build.target_date = datetime.now().date() - timedelta(days=1) diff --git a/InvenTree/common/api.py b/InvenTree/common/api.py index e2e10ecdf2..13a8bc19f8 100644 --- a/InvenTree/common/api.py +++ b/InvenTree/common/api.py @@ -11,6 +11,7 @@ from django.views.decorators.csrf import csrf_exempt import django_q.models from django_q.tasks import async_task from djmoney.contrib.exchange.models import ExchangeBackend, Rate +from drf_spectacular.utils import OpenApiResponse, extend_schema from error_report.models import Error from rest_framework import permissions, serializers from rest_framework.exceptions import NotAcceptable, NotFound @@ -53,7 +54,15 @@ class WebhookView(CsrfExemptMixin, APIView): permission_classes = [] model_class = common.models.WebhookEndpoint run_async = False + serializer_class = None + @extend_schema( + responses={ + 200: OpenApiResponse( + description='Any data can be posted to the endpoint - everything will be passed to the WebhookEndpoint model.' + ) + } + ) def post(self, request, endpoint, *args, **kwargs): """Process incoming webhook.""" # get webhook definition @@ -115,6 +124,7 @@ class CurrencyExchangeView(APIView): """API endpoint for displaying currency information.""" permission_classes = [permissions.IsAuthenticated] + serializer_class = None def get(self, request, format=None): """Return information on available currency conversions.""" @@ -157,6 +167,7 @@ class CurrencyRefreshView(APIView): """ permission_classes = [permissions.IsAuthenticated, permissions.IsAdminUser] + serializer_class = None def post(self, request, *args, **kwargs): """Performing a POST request will update currency exchange rates.""" @@ -516,6 +527,7 @@ class BackgroundTaskOverview(APIView): """Provides an overview of the background task queue status.""" permission_classes = [permissions.IsAuthenticated, IsAdminUser] + serializer_class = None def get(self, request, format=None): """Return information about the current status of the background task queue.""" @@ -668,6 +680,13 @@ common_api_urls = [ path('', BackgroundTaskOverview.as_view(), name='api-task-overview'), ]), ), + path( + 'error-report/', + include([ + path('/', ErrorMessageDetail.as_view(), name='api-error-detail'), + path('', ErrorMessageList.as_view(), name='api-error-list'), + ]), + ), # Project codes path( 'project-code/', diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index 8bb855084e..82463e216a 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -13,10 +13,10 @@ import math import os import re import uuid -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from enum import Enum from secrets import compare_digest -from typing import Any, Callable, Dict, List, Tuple, TypedDict, Union +from typing import Any, Callable, TypedDict, Union from django.apps import apps from django.conf import settings @@ -24,7 +24,6 @@ from django.contrib.auth.models import Group, User from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.contrib.humanize.templatetags.humanize import naturaltime -from django.contrib.sites.models import Site from django.core.cache import cache from django.core.exceptions import AppRegistryNotReady, ValidationError from django.core.validators import MaxValueValidator, MinValueValidator, URLValidator @@ -101,6 +100,10 @@ class BaseURLValidator(URLValidator): """Make sure empty values pass.""" value = str(value).strip() + # If a configuration level value has been specified, prevent change + if settings.SITE_URL: + raise ValidationError(_('Site URL is locked by configuration')) + if len(value) == 0: pass @@ -108,7 +111,7 @@ class BaseURLValidator(URLValidator): super().__call__(value) -class ProjectCode(InvenTree.models.MetadataMixin, models.Model): +class ProjectCode(InvenTree.models.InvenTreeMetadataModel): """A ProjectCode is a unique identifier for a project.""" @staticmethod @@ -154,7 +157,7 @@ class SettingsKeyType(TypedDict, total=False): units: Units of the particular setting (optional) validator: Validation function/list of functions for the setting (optional, default: None, e.g: bool, int, str, MinValueValidator, ...) default: Default value or function that returns default value (optional) - choices: (Function that returns) Tuple[str: key, str: display value] (optional) + choices: Function that returns or value of list[tuple[str: key, str: display value]] (optional) hidden: Hide this setting from settings page (optional) before_save: Function that gets called after save with *args, **kwargs (optional) after_save: Function that gets called after save with *args, **kwargs (optional) @@ -166,9 +169,9 @@ class SettingsKeyType(TypedDict, total=False): name: str description: str units: str - validator: Union[Callable, List[Callable], Tuple[Callable]] + validator: Union[Callable, list[Callable], tuple[Callable]] default: Union[Callable, Any] - choices: Union[Tuple[str, str], Callable[[], Tuple[str, str]]] + choices: Union[list[tuple[str, str]], Callable[[], list[tuple[str, str]]]] hidden: bool before_save: Callable[..., None] after_save: Callable[..., None] @@ -185,9 +188,9 @@ class BaseInvenTreeSetting(models.Model): extra_unique_fields: List of extra fields used to be unique, e.g. for PluginConfig -> plugin """ - SETTINGS: Dict[str, SettingsKeyType] = {} + SETTINGS: dict[str, SettingsKeyType] = {} - extra_unique_fields: List[str] = [] + extra_unique_fields: list[str] = [] class Meta: """Meta options for BaseInvenTreeSetting -> abstract stops creation of database entry.""" @@ -329,7 +332,7 @@ class BaseInvenTreeSetting(models.Model): cls, *, exclude_hidden=False, - settings_definition: Union[Dict[str, SettingsKeyType], None] = None, + settings_definition: Union[dict[str, SettingsKeyType], None] = None, **kwargs, ): """Return a list of "all" defined settings. @@ -349,7 +352,7 @@ class BaseInvenTreeSetting(models.Model): # Optionally filter by other keys results = results.filter(**filters) - settings: Dict[str, BaseInvenTreeSetting] = {} + settings: dict[str, BaseInvenTreeSetting] = {} # Query the database for setting in results: @@ -391,7 +394,7 @@ class BaseInvenTreeSetting(models.Model): cls, *, exclude_hidden=False, - settings_definition: Union[Dict[str, SettingsKeyType], None] = None, + settings_definition: Union[dict[str, SettingsKeyType], None] = None, **kwargs, ): """Return a dict of "all" defined global settings. @@ -406,7 +409,7 @@ class BaseInvenTreeSetting(models.Model): **kwargs, ) - settings: Dict[str, Any] = {} + settings: dict[str, Any] = {} for key, setting in all_settings.items(): settings[key] = setting.value @@ -418,7 +421,7 @@ class BaseInvenTreeSetting(models.Model): cls, *, exclude_hidden=False, - settings_definition: Union[Dict[str, SettingsKeyType], None] = None, + settings_definition: Union[dict[str, SettingsKeyType], None] = None, **kwargs, ): """Check if all required settings are set by definition. @@ -433,7 +436,7 @@ class BaseInvenTreeSetting(models.Model): **kwargs, ) - missing_settings: List[str] = [] + missing_settings: list[str] = [] for setting in all_settings.values(): if setting.required: @@ -522,7 +525,11 @@ class BaseInvenTreeSetting(models.Model): if callable(choices): # Evaluate the function (we expect it will return a list of tuples...) - return choices() + try: + # Attempt to pass the kwargs to the function, if it doesn't expect them, ignore and call without + return choices(**kwargs) + except TypeError: + return choices() return choices @@ -647,7 +654,7 @@ class BaseInvenTreeSetting(models.Model): return value @classmethod - def set_setting(cls, key, value, change_user, create=True, **kwargs): + def set_setting(cls, key, value, change_user=None, create=True, **kwargs): """Set the value of a particular setting. If it does not exist, option to create it. Args: @@ -674,6 +681,16 @@ class BaseInvenTreeSetting(models.Model): setting = cls(key=key, **kwargs) else: return + except (OperationalError, ProgrammingError): + if not key.startswith('_'): + logger.warning("Database is locked, cannot set setting '%s'", key) + # Likely the DB is locked - not much we can do here + return + except Exception as exc: + logger.exception( + "Error setting setting '%s' for %s: %s", key, str(cls), str(type(exc)) + ) + return # Enforce standard boolean representation if setting.is_bool(): @@ -700,6 +717,10 @@ class BaseInvenTreeSetting(models.Model): attempts=attempts - 1, **kwargs, ) + except (OperationalError, ProgrammingError): + logger.warning("Database is locked, cannot set setting '%s'", key) + # Likely the DB is locked - not much we can do here + pass except Exception as exc: # Some other error logger.exception( @@ -1065,6 +1086,15 @@ def settings_group_options(): def update_instance_url(setting): """Update the first site objects domain to url.""" + if not settings.SITE_MULTI: + return + + try: + from django.contrib.sites.models import Site + except (ImportError, RuntimeError): + # Multi-site support not enabled + return + site_obj = Site.objects.all().order_by('id').first() site_obj.domain = setting.value site_obj.save() @@ -1072,6 +1102,15 @@ def update_instance_url(setting): def update_instance_name(setting): """Update the first site objects name to instance name.""" + if not settings.SITE_MULTI: + return + + try: + from django.contrib.sites.models import Site + except (ImportError, RuntimeError): + # Multi-site support not enabled + return + site_obj = Site.objects.all().order_by('id').first() site_obj.name = setting.value site_obj.save() @@ -1132,6 +1171,16 @@ def reload_plugin_registry(setting): registry.reload_plugins(full_reload=True, force_reload=True, collect=True) +class InvenTreeSettingsKeyType(SettingsKeyType): + """InvenTreeSettingsKeyType has additional properties only global settings support. + + Attributes: + requires_restart: If True, a server restart is required after changing the setting + """ + + requires_restart: bool + + class InvenTreeSetting(BaseInvenTreeSetting): """An InvenTreeSetting object is a key:value pair used for storing single values (e.g. one-off settings values). @@ -1139,6 +1188,8 @@ class InvenTreeSetting(BaseInvenTreeSetting): even if that key does not exist. """ + SETTINGS: dict[str, InvenTreeSettingsKeyType] + class Meta: """Meta options for InvenTreeSetting.""" @@ -1843,6 +1894,12 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'validator': bool, 'requires_restart': True, }, + 'PLUGIN_UPDATE_CHECK': { + 'name': _('Check for plugin updates'), + 'description': _('Enable periodic checks for updates to installed plugins'), + 'default': True, + 'validator': bool, + }, # Settings for plugin mixin features 'ENABLE_PLUGINS_URL': { 'name': _('Enable URL integration'), @@ -1924,6 +1981,14 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': False, 'validator': bool, }, + 'PREVENT_BUILD_COMPLETION_HAVING_INCOMPLETED_TESTS': { + 'name': _('Block Until Tests Pass'), + 'description': _( + 'Prevent build outputs from being completed until all required tests pass' + ), + 'default': False, + 'validator': bool, + }, } typ = 'inventree' @@ -2318,6 +2383,11 @@ class InvenTreeUserSetting(BaseInvenTreeSetting): 'default': True, 'validator': bool, }, + 'LAST_USED_PRINTING_MACHINES': { + 'name': _('Last used printing machines'), + 'description': _('Save the last used printing machines for a user'), + 'default': '', + }, } typ = 'user' @@ -2827,12 +2897,17 @@ class NotificationMessage(models.Model): """Return API endpoint.""" return reverse('api-notifications-list') - def age(self): + def age(self) -> int: """Age of the message in seconds.""" - delta = now() - self.creation + # Add timezone information if TZ is enabled (in production mode mostly) + delta = now() - ( + self.creation.replace(tzinfo=timezone.utc) + if settings.USE_TZ + else self.creation + ) return delta.seconds - def age_human(self): + def age_human(self) -> str: """Humanized age.""" return naturaltime(self.creation) diff --git a/InvenTree/common/notifications.py b/InvenTree/common/notifications.py index 846e8525a4..7e3c4016f1 100644 --- a/InvenTree/common/notifications.py +++ b/InvenTree/common/notifications.py @@ -142,7 +142,7 @@ class NotificationMethod: return False # Check if method globally enabled - plg_instance = registry.plugins.get(plg_cls.NAME.lower()) + plg_instance = registry.get_plugin(plg_cls.NAME.lower()) if plg_instance and not plg_instance.get_setting(self.GLOBAL_SETTING): return True @@ -422,7 +422,7 @@ def trigger_notification(obj, category=None, obj_ref='pk', **kwargs): # Collect possible methods if delivery_methods is None: - delivery_methods = storage.liste + delivery_methods = storage.liste or [] else: delivery_methods = delivery_methods - IGNORED_NOTIFICATION_CLS diff --git a/InvenTree/common/serializers.py b/InvenTree/common/serializers.py index 8b6dcb70c2..c9508dd2d9 100644 --- a/InvenTree/common/serializers.py +++ b/InvenTree/common/serializers.py @@ -59,6 +59,10 @@ class SettingsSerializer(InvenTreeModelSerializer): units = serializers.CharField(read_only=True) + required = serializers.BooleanField(read_only=True) + + typ = serializers.CharField(read_only=True) + def get_choices(self, obj): """Returns the choices available for a given item.""" results = [] @@ -148,6 +152,7 @@ class GenericReferencedSettingSerializer(SettingsSerializer): 'model_name', 'api_url', 'typ', + 'required', ] # set Meta class @@ -195,7 +200,7 @@ class NotificationMessageSerializer(InvenTreeModelSerializer): user = serializers.PrimaryKeyRelatedField(read_only=True) read = serializers.BooleanField() - def get_target(self, obj): + def get_target(self, obj) -> dict: """Function to resolve generic object reference to target.""" target = get_objectreference(obj, 'target_content_type', 'target_object_id') @@ -217,7 +222,7 @@ class NotificationMessageSerializer(InvenTreeModelSerializer): return target - def get_source(self, obj): + def get_source(self, obj) -> dict: """Function to resolve generic object reference to source.""" return get_objectreference(obj, 'source_content_type', 'source_object_id') diff --git a/InvenTree/common/settings.py b/InvenTree/common/settings.py index 68dc4f7c99..03601ad1f8 100644 --- a/InvenTree/common/settings.py +++ b/InvenTree/common/settings.py @@ -56,3 +56,12 @@ def stock_expiry_enabled(): from common.models import InvenTreeSetting return InvenTreeSetting.get_setting('STOCK_ENABLE_EXPIRY', False, create=False) + + +def prevent_build_output_complete_on_incompleted_tests(): + """Returns True if the completion of the build outputs is disabled until the required tests are passed.""" + from common.models import InvenTreeSetting + + return InvenTreeSetting.get_setting( + 'PREVENT_BUILD_COMPLETION_HAVING_INCOMPLETED_TESTS', False, create=False + ) diff --git a/InvenTree/common/tests.py b/InvenTree/common/tests.py index b9368e079b..49c02dd47b 100644 --- a/InvenTree/common/tests.py +++ b/InvenTree/common/tests.py @@ -658,6 +658,30 @@ class PluginSettingsApiTest(PluginMixin, InvenTreeAPITestCase): ... +class ErrorReportTest(InvenTreeAPITestCase): + """Unit tests for the error report API.""" + + def test_error_list(self): + """Test error list.""" + from InvenTree.exceptions import log_error + + url = reverse('api-error-list') + response = self.get(url, expected_code=200) + self.assertEqual(len(response.data), 0) + + # Throw an error! + log_error( + 'test error', error_name='My custom error', error_info={'test': 'data'} + ) + + response = self.get(url, expected_code=200) + self.assertEqual(len(response.data), 1) + + err = response.data[0] + for k in ['when', 'info', 'data', 'path']: + self.assertIn(k, err) + + class TaskListApiTests(InvenTreeAPITestCase): """Unit tests for the background task API endpoints.""" diff --git a/InvenTree/company/admin.py b/InvenTree/company/admin.py index 7f5a1ed54a..69136ad80c 100644 --- a/InvenTree/company/admin.py +++ b/InvenTree/company/admin.py @@ -33,6 +33,7 @@ class CompanyResource(InvenTreeResource): clean_model_instances = True +@admin.register(Company) class CompanyAdmin(ImportExportModelAdmin): """Admin class for the Company model.""" @@ -69,6 +70,7 @@ class SupplierPriceBreakInline(admin.TabularInline): model = SupplierPriceBreak +@admin.register(SupplierPart) class SupplierPartAdmin(ImportExportModelAdmin): """Admin class for the SupplierPart model.""" @@ -105,6 +107,7 @@ class ManufacturerPartResource(InvenTreeResource): manufacturer_name = Field(attribute='manufacturer__name', readonly=True) +@admin.register(ManufacturerPart) class ManufacturerPartAdmin(ImportExportModelAdmin): """Admin class for ManufacturerPart model.""" @@ -117,6 +120,7 @@ class ManufacturerPartAdmin(ImportExportModelAdmin): autocomplete_fields = ('part', 'manufacturer') +@admin.register(ManufacturerPartAttachment) class ManufacturerPartAttachmentAdmin(ImportExportModelAdmin): """Admin class for ManufacturerPartAttachment model.""" @@ -137,6 +141,7 @@ class ManufacturerPartParameterResource(InvenTreeResource): clean_model_instance = True +@admin.register(ManufacturerPartParameter) class ManufacturerPartParameterAdmin(ImportExportModelAdmin): """Admin class for ManufacturerPartParameter model.""" @@ -173,6 +178,7 @@ class SupplierPriceBreakResource(InvenTreeResource): MPN = Field(attribute='part__MPN', readonly=True) +@admin.register(SupplierPriceBreak) class SupplierPriceBreakAdmin(ImportExportModelAdmin): """Admin class for the SupplierPriceBreak model.""" @@ -197,6 +203,7 @@ class AddressResource(InvenTreeResource): company = Field(attribute='company', widget=widgets.ForeignKeyWidget(Company)) +@admin.register(Address) class AddressAdmin(ImportExportModelAdmin): """Admin class for the Address model.""" @@ -221,6 +228,7 @@ class ContactResource(InvenTreeResource): company = Field(attribute='company', widget=widgets.ForeignKeyWidget(Company)) +@admin.register(Contact) class ContactAdmin(ImportExportModelAdmin): """Admin class for the Contact model.""" @@ -229,15 +237,3 @@ class ContactAdmin(ImportExportModelAdmin): list_display = ('company', 'name', 'role', 'email', 'phone') search_fields = ['company', 'name', 'email'] - - -admin.site.register(Company, CompanyAdmin) -admin.site.register(SupplierPart, SupplierPartAdmin) -admin.site.register(SupplierPriceBreak, SupplierPriceBreakAdmin) - -admin.site.register(ManufacturerPart, ManufacturerPartAdmin) -admin.site.register(ManufacturerPartAttachment, ManufacturerPartAttachmentAdmin) -admin.site.register(ManufacturerPartParameter, ManufacturerPartParameterAdmin) - -admin.site.register(Address, AddressAdmin) -admin.site.register(Contact, ContactAdmin) diff --git a/InvenTree/company/models.py b/InvenTree/company/models.py index c1db51cf50..62d9af03b7 100644 --- a/InvenTree/company/models.py +++ b/InvenTree/company/models.py @@ -24,17 +24,12 @@ import common.settings import InvenTree.conversion import InvenTree.fields import InvenTree.helpers +import InvenTree.models import InvenTree.ready import InvenTree.tasks import InvenTree.validators from common.settings import currency_code_default from InvenTree.fields import InvenTreeURLField, RoundingDecimalField -from InvenTree.models import ( - InvenTreeAttachment, - InvenTreeBarcodeMixin, - InvenTreeNotesMixin, - MetadataMixin, -) from InvenTree.status_codes import PurchaseOrderStatusGroups @@ -63,7 +58,9 @@ def rename_company_image(instance, filename): return os.path.join(base, fn) -class Company(InvenTreeNotesMixin, MetadataMixin, models.Model): +class Company( + InvenTree.models.InvenTreeNotesMixin, InvenTree.models.InvenTreeMetadataModel +): """A Company object represents an external company. It may be a supplier or a customer or a manufacturer (or a combination) @@ -250,7 +247,7 @@ class Company(InvenTreeNotesMixin, MetadataMixin, models.Model): ).distinct() -class CompanyAttachment(InvenTreeAttachment): +class CompanyAttachment(InvenTree.models.InvenTreeAttachment): """Model for storing file or URL attachments against a Company object.""" @staticmethod @@ -270,7 +267,7 @@ class CompanyAttachment(InvenTreeAttachment): ) -class Contact(MetadataMixin, models.Model): +class Contact(InvenTree.models.InvenTreeMetadataModel): """A Contact represents a person who works at a particular company. A Company may have zero or more associated Contact objects. Attributes: @@ -299,7 +296,7 @@ class Contact(MetadataMixin, models.Model): role = models.CharField(max_length=100, blank=True) -class Address(models.Model): +class Address(InvenTree.models.InvenTreeModel): """An address represents a physical location where the company is located. It is possible for a company to have multiple locations. Attributes: @@ -454,7 +451,9 @@ class Address(models.Model): ) -class ManufacturerPart(MetadataMixin, InvenTreeBarcodeMixin, models.Model): +class ManufacturerPart( + InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeMetadataModel +): """Represents a unique part as provided by a Manufacturer Each ManufacturerPart is identified by a MPN (Manufacturer Part Number) Each ManufacturerPart is also linked to a Part object. A Part may be available from multiple manufacturers. Attributes: @@ -555,7 +554,7 @@ class ManufacturerPart(MetadataMixin, InvenTreeBarcodeMixin, models.Model): return s -class ManufacturerPartAttachment(InvenTreeAttachment): +class ManufacturerPartAttachment(InvenTree.models.InvenTreeAttachment): """Model for storing file attachments against a ManufacturerPart object.""" @staticmethod @@ -575,7 +574,7 @@ class ManufacturerPartAttachment(InvenTreeAttachment): ) -class ManufacturerPartParameter(models.Model): +class ManufacturerPartParameter(InvenTree.models.InvenTreeModel): """A ManufacturerPartParameter represents a key:value parameter for a MnaufacturerPart. This is used to represent parameters / properties for a particular manufacturer part. @@ -640,7 +639,12 @@ class SupplierPartManager(models.Manager): ) -class SupplierPart(MetadataMixin, InvenTreeBarcodeMixin, common.models.MetaMixin): +class SupplierPart( + InvenTree.models.MetadataMixin, + InvenTree.models.InvenTreeBarcodeMixin, + common.models.MetaMixin, + InvenTree.models.InvenTreeModel, +): """Represents a unique part as provided by a Supplier Each SupplierPart is identified by a SKU (Supplier Part Number) Each SupplierPart is also linked to a Part or ManufacturerPart object. A Part may be available from multiple suppliers. Attributes: @@ -895,6 +899,11 @@ class SupplierPart(MetadataMixin, InvenTreeBarcodeMixin, common.models.MetaMixin self.availability_updated = datetime.now() self.save() + @property + def name(self): + """Return string representation of own name.""" + return str(self) + @property def manufacturer_string(self): """Format a MPN string for this SupplierPart. diff --git a/InvenTree/company/serializers.py b/InvenTree/company/serializers.py index 8370d22510..ad6202e83a 100644 --- a/InvenTree/company/serializers.py +++ b/InvenTree/company/serializers.py @@ -309,6 +309,7 @@ class SupplierPartSerializer(InvenTreeTagModelSerializer): 'manufacturer_part', 'manufacturer_part_detail', 'MPN', + 'name', 'note', 'pk', 'barcode_hash', @@ -395,6 +396,8 @@ class SupplierPartSerializer(InvenTreeTagModelSerializer): source='manufacturer_part', part_detail=False, read_only=True ) + name = serializers.CharField(read_only=True) + url = serializers.CharField(source='get_absolute_url', read_only=True) # Date fields diff --git a/InvenTree/config_template.yaml b/InvenTree/config_template.yaml index 9baef5fbce..52d713ee59 100644 --- a/InvenTree/config_template.yaml +++ b/InvenTree/config_template.yaml @@ -90,8 +90,8 @@ language: en-us timezone: UTC # Base URL for the InvenTree server -# Use the environment variable INVENTREE_BASE_URL -# base_url: 'http://localhost:8000' +# Use the environment variable INVENTREE_SITE_URL +# site_url: 'http://localhost:8000' # Base currency code (or use env var INVENTREE_BASE_CURRENCY) base_currency: USD @@ -171,13 +171,26 @@ auto_update: False allowed_hosts: - '*' -# Cross Origin Resource Sharing (CORS) settings (see https://github.com/ottoyiu/django-cors-headers) -# Following parameters are -cors: - # CORS_ORIGIN_ALLOW_ALL - If True, the whitelist will not be used and all origins will be accepted. - allow_all: True +# Trusted origins (see CSRF_TRUSTED_ORIGINS in Django settings documentation) +# If you are running behind a proxy, you may need to add the proxy address here +trusted_origins: + - 'http://localhost:8000' + + +# Proxy forwarding settings +# If InvenTree is running behind a proxy, you may need to configure these settings + +# Override with the environment variable INVENTREE_USE_X_FORWARDED_HOST +use_x_forwarded_host: false + +# Override with the environment variable INVENTREE_USE_X_FORWARDED_PORT +use_x_forwarded_port: false + +# Cross Origin Resource Sharing (CORS) settings (see https://github.com/adamchainz/django-cors-headers) +cors: + allow_all: True + allow_credentials: True, - # CORS_ORIGIN_WHITELIST - A list of origins that are authorized to make cross-site HTTP requests. Defaults to [] # whitelist: # - https://example.com # - https://sub.example.com diff --git a/InvenTree/generic/states/api.py b/InvenTree/generic/states/api.py index 77cd5d531d..203a6dea3a 100644 --- a/InvenTree/generic/states/api.py +++ b/InvenTree/generic/states/api.py @@ -2,15 +2,24 @@ import inspect -from rest_framework import permissions +from drf_spectacular.utils import OpenApiResponse, extend_schema +from rest_framework import permissions, serializers +from rest_framework.generics import GenericAPIView from rest_framework.response import Response -from rest_framework.serializers import ValidationError -from rest_framework.views import APIView + +from InvenTree.serializers import EmptySerializer from .states import StatusCode -class StatusView(APIView): +class StatusViewSerializer(serializers.Serializer): + """Serializer for the StatusView responses.""" + + class_name = serializers.CharField() + values = serializers.DictField() + + +class StatusView(GenericAPIView): """Generic API endpoint for discovering information on 'status codes' for a particular model. This class should be implemented as a subclass for each type of status. @@ -28,12 +37,19 @@ class StatusView(APIView): status_model = self.kwargs.get(self.MODEL_REF, None) if status_model is None: - raise ValidationError( + raise serializers.ValidationError( f"StatusView view called without '{self.MODEL_REF}' parameter" ) return status_model + @extend_schema( + description='Retrieve information about a specific status code', + responses={ + 200: OpenApiResponse(description='Status code information'), + 400: OpenApiResponse(description='Invalid request'), + }, + ) def get(self, request, *args, **kwargs): """Perform a GET request to learn information about status codes.""" status_class = self.get_status_model() @@ -53,15 +69,22 @@ class AllStatusViews(StatusView): """Endpoint for listing all defined status models.""" permission_classes = [permissions.IsAuthenticated] + serializer_class = EmptySerializer def get(self, request, *args, **kwargs): """Perform a GET request to learn information about status codes.""" data = {} - for status_class in StatusCode.__subclasses__(): - data[status_class.__name__] = { - 'class': status_class.__name__, - 'values': status_class.dict(), - } + def discover_status_codes(parent_status_class, prefix=None): + """Recursively discover status classes.""" + for status_class in parent_status_class.__subclasses__(): + name = '__'.join([*(prefix or []), status_class.__name__]) + data[name] = { + 'class': status_class.__name__, + 'values': status_class.dict(), + } + discover_status_codes(status_class, [name]) + + discover_status_codes(StatusCode) return Response(data) diff --git a/InvenTree/label/api.py b/InvenTree/label/api.py index 694e3b9d90..9cf252b2eb 100644 --- a/InvenTree/label/api.py +++ b/InvenTree/label/api.py @@ -4,6 +4,7 @@ from django.core.exceptions import FieldError, ValidationError from django.http import JsonResponse from django.urls import include, path, re_path from django.utils.decorators import method_decorator +from django.utils.translation import gettext_lazy as _ from django.views.decorators.cache import cache_page, never_cache from django_filters.rest_framework import DjangoFilterBackend @@ -13,6 +14,7 @@ from rest_framework.request import clone_request import build.models import common.models +import InvenTree.exceptions import InvenTree.helpers import label.models import label.serializers @@ -232,9 +234,17 @@ class LabelPrintMixin(LabelFilterMixin): # At this point, we offload the label(s) to the selected plugin. # The plugin is responsible for handling the request and returning a response. - result = plugin.print_labels( - label, items_to_print, request, printing_options=request.data - ) + try: + result = plugin.print_labels( + label, + items_to_print, + request, + printing_options=(serializer.data if serializer else {}), + ) + except ValidationError as e: + raise (e) + except Exception as e: + raise ValidationError([_('Error printing label'), str(e)]) if isinstance(result, JsonResponse): result['plugin'] = plugin.plugin_slug() diff --git a/InvenTree/label/apps.py b/InvenTree/label/apps.py index d40752d7fa..114b2ae55a 100644 --- a/InvenTree/label/apps.py +++ b/InvenTree/label/apps.py @@ -12,6 +12,8 @@ from django.conf import settings from django.core.exceptions import AppRegistryNotReady from django.db.utils import IntegrityError, OperationalError, ProgrammingError +from maintenance_mode.core import maintenance_mode_on, set_maintenance_mode + import InvenTree.helpers import InvenTree.ready @@ -32,13 +34,10 @@ class LabelConfig(AppConfig): ): return - if InvenTree.ready.isRunningMigrations(): - return + if not InvenTree.ready.canAppAccessDatabase(allow_test=False): + return # pragma: no cover - if ( - InvenTree.ready.canAppAccessDatabase(allow_test=False) - and not InvenTree.ready.isImportingData() - ): + with maintenance_mode_on(): try: self.create_labels() # pragma: no cover except ( @@ -52,6 +51,8 @@ class LabelConfig(AppConfig): 'Database was not ready for creating labels', stacklevel=2 ) + set_maintenance_mode(False) + def create_labels(self): """Create all default templates.""" # Test if models are ready diff --git a/InvenTree/label/models.py b/InvenTree/label/models.py index 4844888d3d..0ceb75bec2 100644 --- a/InvenTree/label/models.py +++ b/InvenTree/label/models.py @@ -15,11 +15,11 @@ from django.urls import reverse from django.utils.translation import gettext_lazy as _ import build.models +import InvenTree.models import part.models import stock.models from InvenTree.helpers import normalize, validateFilterString from InvenTree.helpers_model import get_base_url -from InvenTree.models import MetadataMixin from plugin.registry import registry try: @@ -88,7 +88,7 @@ class WeasyprintLabelMixin(WeasyTemplateResponseMixin): self.pdf_filename = kwargs.get('filename', 'label.pdf') -class LabelTemplate(MetadataMixin, models.Model): +class LabelTemplate(InvenTree.models.InvenTreeMetadataModel): """Base class for generic, filterable labels.""" class Meta: diff --git a/InvenTree/locale/bg/LC_MESSAGES/django.po b/InvenTree/locale/bg/LC_MESSAGES/django.po index d3a307972c..3ae0347050 100644 --- a/InvenTree/locale/bg/LC_MESSAGES/django.po +++ b/InvenTree/locale/bg/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:42\n" "Last-Translator: \n" "Language-Team: Bulgarian\n" "Language: bg_BG\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "Не е намерена крайна точка на API" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Потребителя няма нужното разрешение, за да вижда този модел" @@ -43,7 +43,7 @@ msgstr "Зададено е недопустимо количество" msgid "Invalid quantity supplied ({exc})" msgstr "Зададено е недопустимо количество ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Подробности за грешката могат да се намерят в администраторския панел" @@ -51,18 +51,18 @@ msgstr "Подробности за грешката могат да се нам msgid "Enter date" msgstr "Въведи дата" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Въведената основна електронна поща е н msgid "The provided email domain is not approved." msgstr "Въведеният домейн на електронната поща не е утвърден." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Регистрацията е деактивирана." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Въведена е недопустима стойност" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Липсва сериен номер" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Повтарящ се сериен номер" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Невалиден диапазон от групи: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Не са открити серийни номера" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Премахнете HTML маркерите от тази стойност" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Грешка при съединението" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Сървърът отговари с невалиден статусен код" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Възникна изключение" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Сървърът отговори с невалидна стойност за дължината на съдържанието (Content-Length)" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Размерът на изображението е твърде голям" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Сваляното на изображение превиши максималния размер" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Отдалеченият сървър върна празен отговор" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Хинди" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Унгарски" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Италиански" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Японски" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Корейски" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Нидерландски" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Норвежки" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Полски" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Португалски" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Португалски (Бразилия)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Руски" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Словенски" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Шведски" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Тайландски" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Турски" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Виетнамски" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Китайски (опростен)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Китайски (традиционен)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "" msgid "Link" msgstr "" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Потребител" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "" msgid "Name" msgstr "" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "родител" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Хинди" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Унгарски" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Италиански" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Японски" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Корейски" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Нидерландски" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Норвежки" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Полски" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Португалски" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Португалски (Бразилия)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Руски" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Словенски" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Шведски" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Тайландски" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Турски" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Виетнамски" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Китайски (опростен)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Китайски (традиционен)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "" @@ -712,7 +722,7 @@ msgstr "Върнат" msgid "In Progress" msgstr "Изпълнява се" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "" msgid "Part" msgstr "Част" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1985,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "Цялостна наличност" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "Място в склада" msgid "Stock Locations" msgstr "Места в склада" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11870,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/cs/LC_MESSAGES/django.po b/InvenTree/locale/cs/LC_MESSAGES/django.po index d3a6aca43d..92178bf6e9 100644 --- a/InvenTree/locale/cs/LC_MESSAGES/django.po +++ b/InvenTree/locale/cs/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:42\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API endpoint nebyl nalezen" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Uživatel nemá právo zobrazit tento model" @@ -36,14 +36,14 @@ msgstr "Nelze převést {original} na {unit}" #: InvenTree/conversion.py:130 msgid "Invalid quantity supplied" -msgstr "" +msgstr "Vyplněno neplatné množství" #: InvenTree/conversion.py:144 #, python-brace-format msgid "Invalid quantity supplied ({exc})" -msgstr "" +msgstr "Vyplněno neplatné množství ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Podrobnosti o chybě lze nalézt v panelu administrace" @@ -51,18 +51,18 @@ msgstr "Podrobnosti o chybě lze nalézt v panelu administrace" msgid "Enter date" msgstr "Zadejte datum" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Zadaná primární e-mailová adresa je neplatná." msgid "The provided email domain is not approved." msgstr "Zadaná e-mailová doména není povolena." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." -msgstr "" +msgstr "Registrace vypnuta." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Vyplněno neplatné množství" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Nevyplněné výrobní číslo" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Duplicitní výrobní číslo" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" -msgstr "" +msgstr "Neplatný rozsah skupiny: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" -msgstr "" +msgstr "Rozsah skupiny {group} překračuje povolené množství ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" -msgstr "" +msgstr "Neplatná sekvence skupiny: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Nenalezena žádná výrobní čísla" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" -msgstr "" +msgstr "Počet jedinečných sériových čísel ({len(serials)}) musí odpovídat množství ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Odstranit HTML tagy z této hodnoty" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Chyba spojení" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Server odpověděl s neplatným stavovým kódem" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Došlo k výjimce" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Server odpověděl s neplatnou hodnotou Content-Length" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Velikost obrázku je příliš velká" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Stahování obrázku překročilo maximální velikost" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Vzdálený server vrátil prázdnou odpověď" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Zadaná URL adresa není platný soubor obrázku" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Bulharština" + +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Čeština" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Dánština" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Němčina" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Řečtina" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Angličtina" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Španělština" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Španělština (Mexiko)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Farsi / Perština" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Finština" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Francouzština" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Hebrejština" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hindština" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Maďarština" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Italština" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japonština" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Korejština" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Nizozemština" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norština" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Polština" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugalština" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugalština (Brazilská)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Ruština" + +#: InvenTree/locales.py:39 +msgid "Slovak" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Slovinština" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Srbština" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Švédština" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Thajština" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Turečtina" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnamština" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Čínština (zjednodušená)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Čínština (tradiční)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "[{site_name}] Přihlásit se do aplikace" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "E-mail" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Metadata musí být objekt python dict" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Metadata pluginu" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "Pole metadat JSON pro použití externími pluginy" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Nesprávně naformátovaný vzor" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Neznámý formát klíče" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Chybí požadovaný klíč" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Referenční pole nemůže být prázdné" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Referenční číslo musí odpovídat požadovanému vzoru" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Referenční číslo je příliš velké" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Chybějící soubor" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Chybějící externí odkaz" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Příloha" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Vyberte soubor k přiložení" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Vyberte soubor k přiložení" msgid "Link" msgstr "Odkaz" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Odkaz na externí URL" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Komentář" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Komentář k souboru" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Uživatel" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "datum přidání" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Název souboru nesmí být prázdný" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Neplatný adresář přílohy" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Název souboru obsahuje nepovolený znak '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Chybějící přípona souboru" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Příloha s tímto názvem již existuje" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Chyba při přejmenování souboru" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "Duplicitní názvy nemohou existovat pod stejným nadřazeným názvem" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Neplatný výběr" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Neplatný výběr" msgid "Name" msgstr "Název" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "Název" msgid "Description" msgstr "Popis" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Popis (volitelně)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "nadřazený" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Cesta" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Poznámky (volitelné)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Data čárového kódu" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Data čárového kódu třetí strany" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Hash čárového kódu" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Jedinečný hash dat čárového kódu" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Nalezen existující čárový kód" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Chyba serveru" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Server zaznamenal chybu." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Musí být platné číslo" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Měna" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Vyberte měnu z dostupných možností" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." -msgstr "" +msgstr "Nemáte oprávnění měnit tuto uživatelskou roli." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" -msgstr "" +msgstr "Pouze superuživatelé mohou vytvářet nové uživatele" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" -msgstr "" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." +msgstr "Váš účet byl vytvořen." -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." -msgstr "" +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" +msgstr "Pro přihlášení použijte funkci obnovení hesla" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "Vítejte v InvenTree" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Název souboru" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Neplatná hodnota" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Datový soubor" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Vyberte datový soubor k nahrání" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Nepodporovaný typ souboru" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Soubor je příliš velký" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "V souboru nebyly nalezeny žádné sloupce" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "V souboru nebyly nalezeny žádné řádky s daty" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Nebyly zadány žádné řádky s daty" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Nebyly zadány žádné sloupce s daty" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Chybí povinný sloupec: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplicitní sloupec: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" -msgstr "" +msgstr "Vzdálený obraz" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "URL souboru vzdáleného obrázku" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Stahování obrázků ze vzdálené URL není povoleno" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Čeština" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Dánština" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Němčina" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Řečtina" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Angličtina" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Španělština" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Španělština (Mexiko)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Farsi / Perština" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Finština" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Francouzština" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Hebrejština" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Maďarština" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Italština" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japonština" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Korejština" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Nizozemština" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norština" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Polština" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugalština" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugalština (Brazilská)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Ruština" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Slovinština" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Švédština" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Thajština" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Turečtina" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnamština" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Kontrola procesů na pozadí se nezdařila" @@ -712,7 +722,7 @@ msgstr "Vráceno" msgid "In Progress" msgstr "Zpracovává se" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -873,11 +883,7 @@ msgstr "Odmítnout" #: InvenTree/templatetags/inventree_extras.py:177 msgid "Unknown database" -msgstr "" - -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" +msgstr "Neznámá databáze" #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" @@ -927,39 +933,39 @@ msgstr "O InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Sestavení musí být zrušeno před odstraněním" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" -msgstr "" +msgstr "Spotřební materiál" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 msgid "Optional" -msgstr "" +msgstr "Volitelné" #: build/api.py:283 templates/js/translated/table_filters.js:408 #: templates/js/translated/table_filters.js:575 msgid "Tracked" -msgstr "" +msgstr "Sledováno" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" -msgstr "" +msgstr "Přiděleno" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -967,18 +973,18 @@ msgstr "" #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:571 msgid "Available" -msgstr "" +msgstr "Dostupné" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Vytvořit objednávku" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "Vytvořit objednávku" msgid "Build Orders" msgstr "Vytvořené objednávky" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Neplatná volba nadřazeného sestavení" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" -msgstr "" +msgstr "Díly obědnávky sestavení nemohou být změněny" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Referenční číslo objednávky" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "Referenční číslo objednávky" msgid "Reference" msgstr "Reference" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "Stručný popis sestavení (nepovinné)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Nadřazená sestava" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,198 +1087,198 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" msgid "Part" msgstr "Díl" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Vyber téma, které chceš stavět" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Referenční číslo prodejní objednávky" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Prodejní příkaz, kterému je tato verze přidělena" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Umístění lokace" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Vyberte lokaci, ze které chcete provést inventuru pro sestavu. (nechte prázdné, chcete-li provést inventuru z libovolné lokace)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Cílová lokace" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Vyberte lokaci, kde budou dokončené položky uloženy" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Množství sestav" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Počet skladových položek k sestavení" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Dokončené položky" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Počet skladových položek, které byly dokončeny" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Stav sestavení" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Stavový kód sestavení" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" -msgstr "" +msgstr "Kód dávky" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" -msgstr "" +msgstr "Dávkový kód pro tento výstup sestavení" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Datum vytvoření" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Cílové datum dokončení" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Cílové datum dokončení sestavení. Sestavení bude po tomto datu v prodlení." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Datum dokončení" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "dokončil" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Vystavil" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Uživatel, který vydal tento příkaz k sestavení" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Odpovědný" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "Uživatel nebo skupina odpovědná za tento příkaz k sestavení" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Externí odkaz" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "Priorita sestavení" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "Priorita tohoto příkazu k sestavení" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 #: templates/js/translated/table_filters.js:48 #: templates/project_code_data.html:6 msgid "Project Code" -msgstr "" +msgstr "Kód projektu" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" -msgstr "" +msgstr "Kód projektu pro objednávku sestavení" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Příkaz k sestavení {build} byl dokončen" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "Příkaz k sestavení byl dokončen" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Nebyl specifikováno žádný výstup sestavení" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "Výstup sestavení je již dokončen" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "Výstup sestavení neodpovídá příkazu sestavení" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "Množství musí být vyšší než nula" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "Množství nemůže být větší než výstupní množství" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" -msgstr "" +msgstr "Vytvořit objekt" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1312,43 +1318,43 @@ msgstr "" #: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 #: templates/js/translated/stock.js:3075 msgid "Quantity" -msgstr "" +msgstr "Množství" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" -msgstr "" +msgstr "Vyžadované množství pro objednávku" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Položka sestavení musí specifikovat výstup sestavení, protože hlavní díl je označen jako sledovatelný" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Zabrané množství ({q}) nesmí překročit dostupné skladové množství ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "Skladová položka je nadměrně zabrána" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Zabrané množství musí být větší než nula" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "Množství musí být 1 pro zřetězený sklad" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" -msgstr "" +msgstr "Vybraná položka zásob neodpovídá řádku BOM" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1358,91 +1364,91 @@ msgstr "" #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 #: templates/js/translated/stock.js:2948 msgid "Stock Item" -msgstr "" +msgstr "Skladové položky" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" -msgstr "" +msgstr "Zdrojová skladová položka" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" -msgstr "" +msgstr "Skladové množství pro sestavení" + +#: build/models.py:1559 +msgid "Install into" +msgstr "Instalovat do" #: build/models.py:1560 -msgid "Install into" -msgstr "" - -#: build/models.py:1561 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" -msgstr "" - -#: build/serializers.py:167 -msgid "Build output does not match the parent build" -msgstr "" +msgstr "Vytvořit výstup" #: build/serializers.py:171 +msgid "Build output does not match the parent build" +msgstr "Vytvořený výstup neodpovídá nadřazenému sestavení" + +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" -msgstr "" +msgstr "Sériová čísla" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" -msgstr "" +msgstr "Automaticky zvolit sériová čísla" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1453,34 +1459,34 @@ msgstr "" #: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 #: templates/js/translated/stock.js:2842 msgid "Location" -msgstr "" +msgstr "Lokace" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" -msgstr "" +msgstr "Umístění zásob pro seškrábnuté výstupy" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1488,159 +1494,188 @@ msgstr "" #: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 #: templates/js/translated/stock.js:3091 msgid "Status" -msgstr "" +msgstr "Stav" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" -msgstr "" +msgstr "Vynechat lokace" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" +msgstr "Volitelné položky" + +#: build/serializers.py:974 +msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:970 -msgid "Allocate optional BOM items to build order" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" msgstr "" #: build/tasks.py:149 @@ -1681,7 +1716,7 @@ msgstr "" #: stock/templates/stock/item_base.html:44 #: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" -msgstr "" +msgstr "Zobrazit QR kód" #: build/templates/build/build_base.html:45 #: company/templates/company/supplier_part.html:41 @@ -1694,7 +1729,7 @@ msgstr "" #: templates/js/translated/barcode.js:496 #: templates/js/translated/barcode.js:501 msgid "Unlink Barcode" -msgstr "" +msgstr "Odstranit čárový kód" #: build/templates/build/build_base.html:47 #: company/templates/company/supplier_part.html:43 @@ -1705,7 +1740,7 @@ msgstr "" #: stock/templates/stock/item_base.html:49 #: stock/templates/stock/location.html:61 msgid "Link Barcode" -msgstr "" +msgstr "Přiřadit čárový kód" #: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1781,7 +1816,7 @@ msgstr "" #: templates/js/translated/sales_order.js:835 #: templates/js/translated/sales_order.js:1867 msgid "Target Date" -msgstr "" +msgstr "Cílené datum" #: build/templates/build/build_base.html:165 #, python-format @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,9 +1864,9 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" -msgstr "" +msgstr "Priorita" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,19 +1921,19 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" -msgstr "" +msgstr "Vytvořeno" #: build/templates/build/detail.html:144 msgid "No target date set" -msgstr "" +msgstr "Nenastaveno cílené datum" #: build/templates/build/detail.html:149 #: order/templates/order/sales_order_base.html:202 #: templates/js/translated/table_filters.js:685 msgid "Completed" -msgstr "" +msgstr "Dokončeno" #: build/templates/build/detail.html:153 msgid "Build not complete" @@ -1985,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2028,7 +2063,7 @@ msgstr "" #: common/forms.py:12 msgid "File" -msgstr "" +msgstr "Soubor" #: common/forms.py:12 msgid "Select file to upload" @@ -2043,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Jméno společnosti" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Výchozí měna" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "Stáhnout z URL" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Možné zakoupit" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "Díly jsou zakoupitelné ve výchozím nastavení" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Prodejné" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "Díly jsou prodejné ve výchozím nastavení" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Sledovatelné" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "Díly jsou sledovatelné ve výchozím nastavení" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Nehmotné (virtuální)" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "Díly jsou nehmotné (virtuální) ve výchozím nastavení" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "Zobrazit Import v zobrazeních" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "Zobrazit související díly" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "Zobrazit související díly pro díl" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "Počáteční údaje zásob" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "Povolit vytvoření počátečního skladu při přidání nové části" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Počáteční údaje dodavatele" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Povolit vytvoření počátečních dat dodavatele při přidávání nového dílu" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "Formát zobrazení jména dílu" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "Formát pro zobrazení názvu dílu" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "Výchozí ikona kategorie dílu" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "Výchozí ikona kategorie dílu (prázdné znamená bez ikony)" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "Minimální počet desetinných míst u cen" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Minimální počet desetinných míst k zobrazení u cenových údajů" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "Maximální počet desetinných míst u cen" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Maximální počet desetinných míst k zobrazení u cenových údajů" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "Použít ceny dodavatele" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "Přepsání historie nákupu" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Velikost stránky" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "Výchozí velikost stránky pro PDF reporty" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "Povolit testovací reporty" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "Povolit generování zkušebních reportů" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "Připojit testovací reporty" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Při tisku testovacího reportu, připojte kopii reportu k přidružené skladové položce" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "Sériová čísla pro skladové položky musí být globálně unikátní" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "Automaticky vyplnit sériová čísla" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "Automaticky vyplnit sériová čísla ve formulářích" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "Odstranit vyčerpané zásoby" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "Určuje výchozí chování, když je vyčerpána skladová položka" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "Formát data" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Cena" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "Id" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "Obrazek" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "Webová stránka" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "Webové stránky společnosti" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Telefonní číslo" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "Kontaktní telefonní číslo" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "Kontaktní e-mailová adresa" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Kontakt" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "Kontaktní místo" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "je zákazník" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Společnost" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Základní díl" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "Zvolte díl" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "Zvolte díl" msgid "Manufacturer" msgstr "Výrobce" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Vyberte výrobce" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "Vyberte výrobce" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "Číslo dílu výrobce" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "Popis dílu výrobce" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Výrobce dílu" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "Název parametru" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Hodnota" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "Hodnota parametru" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "Jednotky" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "Stáhnout obrázek z URL" msgid "Delete image" msgstr "Smazat obrázek" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "Zákazník" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4112,11 +4228,11 @@ msgstr "Telefon" #: company/templates/company/company_base.html:205 #: part/templates/part/part_base.html:528 msgid "Remove Image" -msgstr "Odstranit obrázek" +msgstr "" #: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" -msgstr "Odstranit přiřazený obrázek této společnosti" +msgstr "" #: company/templates/company/company_base.html:208 #: part/templates/part/part_base.html:531 @@ -4128,12 +4244,12 @@ msgstr "Odstranit" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "Nahrát obrázek" +msgstr "" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "Stáhnout obrázek" +msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "Činnost nebyla specifikována" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Nebyla nalezena odpovídající činnost" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Sestavení" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Odstranit" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "Vybrané díly" +msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11210,7 +11481,7 @@ msgstr "" #: templates/js/translated/company.js:1181 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 msgid "Order parts" -msgstr "Objednávka dílů" +msgstr "" #: templates/js/translated/company.js:1198 msgid "Delete manufacturer parts" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11870,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "Ano" msgid "No" msgstr "Ne" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "Uživatelé" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "Osobní údaje" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "Oprávnění" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "Nastavení oprávnění" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "Skupina" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "Zobrazit" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "Oprávnění k zobrazení položek" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "Oprávnění přidat položky" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "Změnit" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Oprávnění k úpravě položek" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "Oprávnění k odstranění položek" diff --git a/InvenTree/locale/da/LC_MESSAGES/django.po b/InvenTree/locale/da/LC_MESSAGES/django.po index 427d13ffcc..9fd3a812d6 100644 --- a/InvenTree/locale/da/LC_MESSAGES/django.po +++ b/InvenTree/locale/da/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:42\n" "Last-Translator: \n" "Language-Team: Danish\n" "Language: da_DK\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API endpoint ikke fundet" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Bruger har ikke tilladelse til at se denne model" @@ -43,7 +43,7 @@ msgstr "Ugyldigt antal angivet" msgid "Invalid quantity supplied ({exc})" msgstr "Ugyldigt antal angivet ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Fejloplysninger kan findes i admin panelet" @@ -51,18 +51,18 @@ msgstr "Fejloplysninger kan findes i admin panelet" msgid "Enter date" msgstr "Angiv dato" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Den indtastede email adresse er ikke gyldig." msgid "The provided email domain is not approved." msgstr "Det angivne e-mail domæne er ikke godkendt." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Registrering er deaktiveret." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Ugyldigt antal angivet" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Serienummer streng er tom" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Duplikeret serienummer" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Ugyldig gruppesekvens: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Ingen serienumre fundet" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Fjern HTML-tags fra denne værdi" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Forbindelsesfejl" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Serveren svarede med ugyldig statuskode" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Der opstod en fejl" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Serveren svarede med ugyldig Content-Length værdi" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Billedstørrelsen er for stor" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Billeddownload overskred maksimumstørrelsen" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Fjernserver returnerede tomt svar" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Angivet URL er ikke en gyldig billedfil" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Log ind på appen" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Bulgarsk" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Tjekkisk" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Dansk" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Tysk" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Græsk" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Engelsk" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Spansk" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Spansk (Mexikansk)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Farsi / Persisk" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Finsk" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Fransk" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Hebraisk" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Ungarsk" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Italiensk" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japansk" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Koreansk" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Hollandsk" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norsk" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Polsk" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugisisk" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugisisk (Brasilien)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Russisk" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Slovensk" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Serbisk" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Svensk" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Thailandsk" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Tyrkisk" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnamesisk" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Kinesisk (forenklet)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Kinesisk (traditionelt)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "E-mail" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Metadata skal være et python dict objekt" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Plugin Metadata" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "JSON metadata felt, til brug af eksterne plugins" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Forkert formateret mønster" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Ukendt formatnøgle angivet" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Mangler nødvendig formatnøgle" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Referencefelt må ikke være tomt" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Reference skal matche det påkrævede mønster" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Referencenummer er for stort" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Manglende fil" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Manglende eksternt link" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Vedhæftning" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Vælg fil, der skal vedhæftes" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Vælg fil, der skal vedhæftes" msgid "Link" msgstr "Link" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Link til ekstern URL" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Kommentar" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Fil kommentar" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Bruger" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "dato for upload" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Filnavn må ikke være tomt" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Ugyldig vedhæftningsmappe" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Filnavn indeholder ugyldigt tegn '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Filnavn mangler filtype" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Vedhæftning med dette filnavn findes allerede" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Fejl ved omdøbning af fil" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Ugyldigt valg" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Ugyldigt valg" msgid "Name" msgstr "Navn" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,273 +531,149 @@ msgstr "Navn" msgid "Description" msgstr "Beskrivelse" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Beskrivelse (valgfri)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "overordnet" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Sti" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Markdown noter (valgfri)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Stregkode Data" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Tredjeparts stregkode data" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Stregkode Hash" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Unik hash af stregkode data" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Eksisterende stregkode fundet" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Serverfejl" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "En fejl blev logget af serveren." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Skal være et gyldigt tal" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Vælg valuta fra tilgængelige muligheder" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "Du har ikke tilladelse til at ændre denne brugerrolle." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "Kun superbrugere kan oprette nye brugere" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" -msgstr "Velkommen til {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." +msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." -msgstr "Din konto er blevet oprettet.\n\n" -"Benyt funktionen til nulstilling af adgangskode til at få adgang (på https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" +msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Filnavn" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Ugyldig værdi" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Datafil" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Vælg datafilen til upload" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Filtype ikke understøttet" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Filen er for stor" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Ingen kolonner fundet i fil" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Ingen datarækker fundet i fil" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Ingen data-rækker angivet" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Ingen data-kolonner angivet" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Mangler påkrævet kolonne: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplikeret kolonne: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "Eksternt billede" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "URL til ekstern billedfil" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Download af billeder fra ekstern URL er ikke aktiveret" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "Bulgarsk" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Tjekkisk" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Dansk" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Tysk" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Græsk" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Engelsk" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Spansk" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Spansk (Mexikansk)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Farsi / Persisk" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Finsk" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Fransk" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Hebraisk" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Hindi" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Ungarsk" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Italiensk" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japansk" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Koreansk" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Hollandsk" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norsk" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Polsk" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugisisk" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugisisk (Brasilien)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Russisk" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Slovensk" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "Serbisk" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Svensk" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Thailandsk" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Tyrkisk" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnamesisk" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Kinesisk (forenklet)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Kinesisk (traditionelt)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Kontrol af baggrundstjeneste mislykkedes" @@ -713,7 +722,7 @@ msgstr "Returneret" msgid "In Progress" msgstr "Igangværende" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -876,10 +885,6 @@ msgstr "Afvis" msgid "Unknown database" msgstr "Ukendt database" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Ugyldig fysisk enhed" @@ -928,16 +933,16 @@ msgstr "Om InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Produktion skal anulleres, før den kan slettes" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "Forbrugsvare" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -949,18 +954,18 @@ msgstr "Valgfri" msgid "Tracked" msgstr "Sporet" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "Allokeret" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -970,16 +975,16 @@ msgstr "Allokeret" msgid "Available" msgstr "Tilgængelig" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Produktionsordre" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -990,27 +995,27 @@ msgstr "Produktionsordre" msgid "Build Orders" msgstr "Produktionsordrer" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Ugyldigt valg for overordnet produktion" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "Byggeordre enhed kan ikke ændres" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Produktionsordre reference" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1018,27 +1023,27 @@ msgstr "Produktionsordre reference" msgid "Reference" msgstr "Reference" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Overordnet produktion" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Produktionsordre som er tildelt denne produktion" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1049,7 +1054,7 @@ msgstr "Produktionsordre som er tildelt denne produktion" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1057,8 +1062,8 @@ msgstr "Produktionsordre som er tildelt denne produktion" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1082,144 +1087,144 @@ msgstr "Produktionsordre som er tildelt denne produktion" msgid "Part" msgstr "Del" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Vælg dele til produktion" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Salgsordrereference" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Salgsordre, som er tildelt denne produktion" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Kilde Lokation" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Vælg lokation for lager, som skal benyttes til denne produktion (lad feltet stå tomt for at benytte vilkårligt lager)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Destinations Placering" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Vælg placering, hvor de færdige elementer vil blive gemt" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Produktions antal" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Antal lagervarer som skal produceres" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Afsluttede elementer" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Antal lagervarer som er færdiggjort" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Produktions Status" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Produktions statuskode" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Batch Kode" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Batch kode til dette produktions output" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Oprettelsesdato" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Projekteret afslutningsdato" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Dato for afslutning" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "udført af" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Udstedt af" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Bruger som udstedte denne byggeordre" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Ansvarlig" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "Bruger eller gruppe ansvarlig for denne byggeordre" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Ekstern link" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "Bygge Prioritet" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "Prioritet af denne byggeordre" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1228,52 +1233,52 @@ msgstr "Prioritet af denne byggeordre" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Bygningsordre {build} er fuldført" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "En byggeordre er fuldført" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1283,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1315,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1361,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1456,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1491,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "Ikke tilladt" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "Accepter som forbrugt af denne byggeordre" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "Accepter Ikke tildelt" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Accepter at lagervarer ikke er fuldt tildelt til denne byggeordre" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "Accepter ufuldført" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "Bygge linje" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1769,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1807,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1830,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1858,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1871,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1887,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1986,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2044,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3455,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3559,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3621,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3659,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3848,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3863,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3938,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3999,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4081,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4099,7 +4214,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4344,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4446,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4485,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4501,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4525,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4539,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4557,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4570,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4584,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4593,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4788,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5290,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5510,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5524,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5562,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5576,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5615,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5638,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5691,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6076,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6487,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6838,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7130,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7248,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7402,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7464,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7563,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7575,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7643,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7663,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7735,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7857,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7950,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8087,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8113,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8144,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8178,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8237,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8298,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8333,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8559,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8846,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8912,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9413,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9567,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9588,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10044,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10124,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10253,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10622,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10642,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10693,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10705,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11427,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11871,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12343,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12508,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12524,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12736,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13165,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13463,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13545,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13609,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index 605c489996..251914bc06 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:31\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:42\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API-Endpunkt nicht gefunden" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Benutzer hat keine Berechtigung, dieses Modell anzuzeigen" @@ -43,7 +43,7 @@ msgstr "Ungültige Menge" msgid "Invalid quantity supplied ({exc})" msgstr "Ungültige Menge ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Fehlerdetails finden Sie im Admin-Panel" @@ -51,18 +51,18 @@ msgstr "Fehlerdetails finden Sie im Admin-Panel" msgid "Enter date" msgstr "Datum eingeben" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Die angegebene primäre E-Mail-Adresse ist ungültig." msgid "The provided email domain is not approved." msgstr "Die angegebene E-Mail-Domain ist nicht freigegeben." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Registrierung ist deaktiviert." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Keine gültige Menge" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Keine Seriennummer angegeben" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Duplizierter Seriennummer" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Ungültiger Gruppenbereich: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Gruppenbereich {group} überschreitet die zulässige Menge ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Ungültige Gruppensequenz: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Keine Seriennummern gefunden" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Anzahl der eindeutigen Seriennummern ({len(serials)}) muss mit der Menge übereinstimmen ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Entferne HTML-Tags von diesem Wert" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Verbindungsfehler" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Server antwortete mit ungültigem Statuscode" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Ausnahme aufgetreten" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Server antwortete mit ungültigem Wert für die Inhaltslänge" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Bild ist zu groß" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Bilddownload überschreitet maximale Größe" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Remote-Server gab leere Antwort zurück" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Angegebene URL ist kein gültiges Bild" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] In App einloggen" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Bulgarisch" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Tschechisch" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Dänisch" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Deutsch" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Griechisch" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Englisch" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Spanisch" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Spanisch (Mexikanisch)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Persisch" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Beenden" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Französisch" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Hebräisch" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Ungarisch" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Italienisch" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japanisch" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Koreanisch" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Niederländisch" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norwegisch" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Polnisch" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugiesisch" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugiesisch (Brasilien)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Russisch" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Slowenisch" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Serbisch" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Schwedisch" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Thailändisch" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Türkisch" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnamesisch" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Chinesisch (Vereinfacht)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Chinesisch (Traditionell)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "[{site_name}] In App einloggen" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "Email" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Metadaten müssen ein Python-Dict Objekt sein" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Plugin Metadaten" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "JSON-Metadatenfeld, für die Verwendung durch externe Plugins" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Falsch formatiertes Muster" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Unbekannter Formatschlüssel angegeben" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Erforderlicher Formatschlüssel fehlt" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Referenz-Feld darf nicht leer sein" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Referenz muss erforderlichem Muster entsprechen" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Referenznummer ist zu groß" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Fehlende Datei" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Fehlender externer Link" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Anhang" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Datei zum Anhängen auswählen" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Datei zum Anhängen auswählen" msgid "Link" msgstr "Link" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Link zu einer externen URL" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Kommentar" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Benutzer" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "Hochladedatum" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Dateiname darf nicht leer sein" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Ungültiges Verzeichnis für Anhang" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Dateiname enthält ungültiges Zeichen '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Dateiendung fehlt" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Anhang mit diesem Dateinamen bereits vorhanden" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Fehler beim Umbenennen" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "Doppelte Namen können nicht unter dem selben Elternteil existieren" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Ungültige Auswahl" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Ungültige Auswahl" msgid "Name" msgstr "Name" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,273 +531,149 @@ msgstr "Name" msgid "Description" msgstr "Beschreibung" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Beschreibung (optional)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "Eltern" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Pfad" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Markdown Notizen (optional)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Barcode-Daten" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Drittanbieter-Barcode-Daten" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Barcode-Hash" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Eindeutiger Hash der Barcode-Daten" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Bestehender Barcode gefunden" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Serverfehler" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Ein Fehler wurde vom Server protokolliert." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Muss eine gültige Nummer sein" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Währung" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Währung aus verfügbaren Optionen auswählen" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "Sie haben keine Berechtigung, diese Benutzerrolle zu ändern." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "Nur Superuser können neue Benutzer erstellen" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" -msgstr "Willkommen bei {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." +msgstr "Ihr Konto wurde erstellt." -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." -msgstr "Ihr Konto wurde erstellt.\n\n" -"Bitte verwenden Sie die Passwort-Zurücksetzen-Funktion, um Zugriff zu erhalten (https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" +msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Dateiname" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Ungültiger Wert" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Datendatei" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Neue Datei zum Hochladen auswählen" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Nicht unterstütztes Dateiformat" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Datei ist zu groß" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Keine Spalten in der Datei gefunden" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Keine Datensätze in der Datei gefunden" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Keine Zeilen ausgewählt" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Keine Spalten angegeben" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Erforderliche Spalte '{name}' fehlt" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Doppelte Spalte: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" -msgstr "" +msgstr "Grafiken aus externen Quellen" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "URL der Remote-Bilddatei" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Das Herunterladen von Bildern von Remote-URLs ist nicht aktiviert" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "Bulgarisch" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Tschechisch" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Dänisch" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Deutsch" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Griechisch" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Englisch" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Spanisch" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Spanisch (Mexikanisch)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Persisch" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Beenden" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Französisch" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Hebräisch" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Hindi" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Ungarisch" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Italienisch" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japanisch" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Koreanisch" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Niederländisch" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norwegisch" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Polnisch" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugiesisch" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugiesisch (Brasilien)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Russisch" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Slowenisch" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Schwedisch" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Thailändisch" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Türkisch" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnamesisch" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Chinesisch (Vereinfacht)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Chinesisch (Traditionell)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Hintergrund-Prozess-Kontrolle fehlgeschlagen" @@ -713,7 +722,7 @@ msgstr "Zurückgegeben" msgid "In Progress" msgstr "In Bearbeitung" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -876,10 +885,6 @@ msgstr "Ablehnen" msgid "Unknown database" msgstr "Unbekannte Datenbank" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Ungültige physikalische Einheit" @@ -928,16 +933,16 @@ msgstr "Über InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Bauauftrag muss abgebrochen werden, bevor er gelöscht werden kann" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "Verbrauchsmaterial" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -949,18 +954,18 @@ msgstr "Optional" msgid "Tracked" msgstr "Nachverfolgt" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "Zugeordnet" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -970,16 +975,16 @@ msgstr "Zugeordnet" msgid "Available" msgstr "Verfügbar" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Bauauftrag" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -990,27 +995,27 @@ msgstr "Bauauftrag" msgid "Build Orders" msgstr "Bauaufträge" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Ungültige Wahl für übergeordneten Bauauftrag" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "Teil in Bauauftrag kann nicht geändert werden" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Bauauftragsreferenz" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1018,27 +1023,27 @@ msgstr "Bauauftragsreferenz" msgid "Reference" msgstr "Referenz" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "Kurze Beschreibung des Baus (optional)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Eltern-Bauauftrag" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1049,7 +1054,7 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1057,8 +1062,8 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1082,144 +1087,144 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" msgid "Part" msgstr "Teil" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Teil für den Bauauftrag wählen" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Auftrag Referenz" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Quell-Lagerort" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Entnahme-Lagerort für diesen Bauauftrag wählen (oder leer lassen für einen beliebigen Lagerort)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Ziel-Lagerort" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Lagerort an dem fertige Objekte gelagert werden auswählen" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Bau-Anzahl" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Anzahl der zu bauenden Lagerartikel" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Fertiggestellte Teile" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Anzahl der fertigen Lagerartikel" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Bauauftrags-Status" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Bau-Statuscode" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Losnummer" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Losnummer für dieses Endprodukt" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Erstelldatum" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "geplantes Fertigstellungsdatum" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Zieldatum für Bauauftrag-Fertigstellung." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Fertigstellungsdatum" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "Fertiggestellt von" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Aufgegeben von" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Nutzer der diesen Bauauftrag erstellt hat" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Verantwortlicher Benutzer" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "Benutzer oder Gruppe verantwortlich für diesen Bauauftrag" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Externer Link" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "Bauauftrags-Priorität" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "Priorität dieses Bauauftrags" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1228,52 +1233,52 @@ msgstr "Priorität dieses Bauauftrags" msgid "Project Code" msgstr "Projektcode" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "Projektcode für diesen Auftrag" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Bauauftrag {build} wurde fertiggestellt" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "Ein Bauauftrag wurde fertiggestellt" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "kein Endprodukt angegeben" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "Endprodukt bereits hergstellt" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "Menge kann nicht größer als die Ausgangsmenge sein" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "Objekt bauen" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1283,15 +1288,15 @@ msgstr "Objekt bauen" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1315,41 +1320,41 @@ msgstr "Objekt bauen" msgid "Quantity" msgstr "Anzahl" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "Erforderliche Menge für Auftrag" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Bauauftragsposition muss ein Endprodukt festlegen, da der übergeordnete Teil verfolgbar ist" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Zugewiesene Menge ({q}) darf nicht verfügbare Menge ({a}) übersteigen" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "BestandObjekt ist zu oft zugewiesen" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Reserviermenge muss größer null sein" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1361,89 +1366,89 @@ msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein" msgid "Stock Item" msgstr "Lagerartikel" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Quell-Lagerartikel" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Installiere in" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Ziel-Lagerartikel" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "Endprodukt" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "Endprodukt stimmt nicht mit übergeordnetem Bauauftrag überein" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "Endprodukt entspricht nicht dem Teil des Bauauftrags" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "Dieses Endprodukt wurde bereits fertiggestellt" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "Dieses Endprodukt ist nicht vollständig zugewiesen" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "Menge der Endprodukte angeben" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "Ganzzahl für verfolgbare Teile erforderlich" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Ganzzahl erforderlich da die Stückliste nachverfolgbare Teile enthält" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Seriennummer" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "Seriennummer für dieses Endprodukt eingeben" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "Seriennummern automatisch zuweisen" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "Benötigte Lagerartikel automatisch mit passenden Seriennummern zuweisen" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "Die folgenden Seriennummern existieren bereits oder sind ungültig" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "Eine Liste von Endprodukten muss angegeben werden" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1456,32 +1461,32 @@ msgstr "Eine Liste von Endprodukten muss angegeben werden" msgid "Location" msgstr "Lagerort" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "Lagerort für ausgemusterte Ausgänge" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "Zuteilungen verwerfen" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "Bestandszuteilung für ausgemusterte Endprodukte verwerfen" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "Grund für das Verwerfen des Bauauftrages/der Bauaufträge" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "Lagerort für fertige Endprodukte" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1491,159 +1496,188 @@ msgstr "Lagerort für fertige Endprodukte" msgid "Status" msgstr "Status" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "Unvollständige Zuweisung akzeptieren" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "Endprodukte fertigstellen, auch wenn Bestand nicht fertig zugewiesen wurde" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "Zugewiesenen Bestand entfernen" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "Abzug aller Lagerbestände, die diesem Build bereits zugewiesen wurden" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "Unfertige Endprodukte entfernen" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "Lösche alle noch nicht abgeschlossenen Endprodukte" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "Nicht erlaubt" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "Als von diesem Bauauftrag verbraucht setzen" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "Bestandszuordnung vor dem Abschluss dieses Bauauftrags freigeben" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "Überbelegter Lagerbestand" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Wie sollen zusätzliche Lagerbestandteile, die dem Bauauftrag zugewiesen wurden, behandelt werden" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "Der Bestand einiger Lagerartikel ist überbelegt" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "Nicht zugewiesene akzeptieren" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Akzeptieren, dass Lagerartikel diesem Bauauftrag nicht vollständig zugewiesen wurden" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "Unvollständig Zuweisung akzeptieren" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "Akzeptieren, dass die erforderliche Anzahl der Bauaufträge nicht abgeschlossen ist" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Bauauftrag hat unvollständige Aufbauten" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "Bauauftragsposition" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "Endprodukt" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "Bauauftragspositionsartikel" -#: build/serializers.py:786 +#: build/serializers.py:790 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:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "Teil muss auf Lager sein" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Verfügbare Menge ({q}) überschritten" -#: build/serializers.py:855 +#: build/serializers.py:859 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:862 +#: build/serializers.py:866 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:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "Zuweisungen müssen angegeben werden" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Lagerort, von dem Teile bezogen werden sollen (leer lassen, um sie von jedem Lagerort zu nehmen)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "Lagerort ausschließen" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "Lagerartikel vom ausgewählten Ort ausschließen" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "Wechselbares Lagerbestand" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Lagerartikel an mehreren Standorten können austauschbar verwendet werden" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "Ersatzbestand" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "Zuordnung von Ersatzteilen erlauben" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "Optionale Positionen" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "Optionale Stücklisten-Positionen dem Bauauftrag hinzufügen" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "Stücklisten-Position" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "Bestellt" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "Verfügbarer Bestand" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "Bestand für Bauauftrag erforderlich" @@ -1769,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Bestand wurde Bauauftrag noch nicht vollständig zugewiesen" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1807,8 +1841,8 @@ msgid "Completed Outputs" msgstr "Fertiggestellte Endprodukte" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1830,21 +1864,21 @@ msgid "Issued By" msgstr "Aufgegeben von" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "Priorität" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "Bauauftrag löschen" +msgstr "" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "Bauftrags-QR-Code" +msgstr "" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "Barcode mit Bauauftrag verknüpfen" +msgstr "" #: build/templates/build/detail.html:15 msgid "Build Details" @@ -1858,7 +1892,7 @@ msgstr "Ausgangs-Lager" msgid "Stock can be taken from any available location." msgstr "Bestand kann jedem verfügbaren Lagerort entnommen werden." -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "Ziel-Lager" @@ -1871,9 +1905,9 @@ msgstr "Ziel-Lagerort nicht angegeben" msgid "Allocated Parts" msgstr "Zugewiesene Teile" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1887,7 +1921,7 @@ msgstr "Losnummer" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "Erstellt" @@ -1986,13 +2020,13 @@ msgstr "Anhänge" msgid "Build Notes" msgstr "Bauauftrags-Notizen" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" -msgstr "Zuordnung abgeschlossen" +msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" -msgstr "Alle Zeilen wurden vollständig zugewiesen" +msgstr "" #: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" @@ -2044,1410 +2078,1431 @@ msgstr "{name.title()} Datei" msgid "Select {name} file to upload" msgstr "{name} Datei zum Hochladen auswählen" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "Aktualisiert" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Zeitstempel der letzten Aktualisierung" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "Eindeutiger Projektcode" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "Projektbeschreibung" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "Benutzer oder Gruppe verantwortlich für dieses Projekt" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "Einstellungs-Wert" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "Wert ist keine gültige Option" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "Wahrheitswert erforderlich" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "Nur Ganzzahl eingeben" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "Schlüsseltext muss eindeutig sein" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "Keine Gruppe" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "Eine leere Domain ist nicht erlaubt." -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Ungültiger Domainname: {domain}" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "Kein Plugin" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "Neustart erforderlich" -#: common/models.py:1178 +#: common/models.py:1217 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:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "Ausstehende Migrationen" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "Anzahl der ausstehenden Datenbankmigrationen" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "Name der Serverinstanz" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "Kurze Beschreibung der Instanz" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "Name der Instanz verwenden" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "Den Namen der Instanz in der Titelleiste verwenden" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "Anzeige von `Über` einschränken" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "Zeige das `Über` Fenster nur Administratoren" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Firmenname" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "interner Firmenname" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "Basis-URL" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "Basis-URL für dieses Instanz" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Standardwährung" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "Wählen Sie die Basiswährung für Preisberechnungen aus" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "Währungsaktualisierungsintervall" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "Wie oft Wechselkurse aktualisiert werden sollen (auf Null zum Deaktivieren setzen)" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "Tage" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "Währungs-Aktualisierungs-Plugin" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "Zu verwendendes Währungs-Aktualisierungs-Plugin" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "Von URL herunterladen" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "Download-Größenlimit" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "Maximal zulässige Größe für heruntergeladene Bilder" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "Benutzer-Agent zum Herunterladen von Daten" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "Überschreiben des Benutzer-Agenten, der verwendet wird, um Bilder und Dateien von externer Servern herunterzuladen (leer für die Standardeinstellung)" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" -msgstr "" +msgstr "Strenge URL-Prüfung" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" -msgstr "" +msgstr "Erfordert die Schema-Spezifikation bei der Validierung von URLs" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "Bestätigung verpflichtend" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "Eine ausdrückliche Benutzerbestätigung für bestimmte Aktionen erfordern." -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "Baumtiefe" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "Standard Ebene für Baumansicht. Tiefere Ebenen können bei Bedarf nachgeladen werden." -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "Prüfungsintervall aktualisieren" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "Wie oft soll nach Updates gesucht werden? (auf 0 setzen zum Deaktivieren)" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "Automatische Sicherung" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "Automatische Sicherung der Datenbank- und Mediendateien aktivieren" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "Intervall für automatische Sicherung" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "Anzahl der Tage zwischen automatischen Sicherungen" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "Aufgabenlöschinterval" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "Ergebnisse der Hintergrundaufgabe werden nach der angegebenen Anzahl von Tagen gelöscht" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "Löschintervall für Fehlerprotokolle" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "Fehlerprotokolle werden nach der angegebenen Anzahl von Tagen gelöscht" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "Löschintervall für Benachrichtigungen" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "Benutzerbenachrichtigungen werden nach der angegebenen Anzahl von Tagen gelöscht" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Bacode-Feature verwenden" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "Barcode-Scanner Unterstützung im Webinterface aktivieren" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "Barcode-Eingabeverzögerung" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "Verzögerungszeit bei Barcode-Eingabe" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "Barcode Webcam-Unterstützung" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "Barcode-Scannen über Webcam im Browser erlauben" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "Artikelrevisionen" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "Revisions-Feld für Artikel aktivieren" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "RegEx Muster für die Zuordnung von Teil-IPN" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "Ändern von IPN erlaubt" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "Teil-Stückliste kopieren" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird " -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "Teil-Parameter kopieren" -#: common/models.py:1380 +#: common/models.py:1419 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:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "Teil-Testdaten kopieren" -#: common/models.py:1386 +#: common/models.py:1425 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:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "Kategorie-Parametervorlage kopieren" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Vorlage" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "Teile sind standardmäßig Vorlagen" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Baugruppe" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Komponente" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "Teile können standardmäßig in Baugruppen benutzt werden" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Kaufbar" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "Artikel sind grundsätzlich kaufbar" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Verkäuflich" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "Artikel sind grundsätzlich verkaufbar" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Nachverfolgbar" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "Artikel sind grundsätzlich verfolgbar" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtuell" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "Teile sind grundsätzlich virtuell" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "Import in Ansichten anzeigen" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "Importassistent in einigen Teil-Ansichten anzeigen" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "Verwandte Teile anzeigen" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "Verwandte Teile eines Teils anzeigen" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "Initialer Lagerbestand" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "Erstellen von Lagerbestand beim Hinzufügen eines neuen Teils erlauben" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Initiale Lieferantendaten" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Erstellen von Lieferantendaten beim Hinzufügen eines neuen Teils erlauben" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "Anzeigeformat für Teilenamen" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "Format für den Namen eines Teiles" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "Standardsymbol der Teilkategorie" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "Standardsymbol der Teilkategorie (leer bedeutet kein Symbol)" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "Parameter Einheiten durchsetzen" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "Wenn Einheiten angegeben werden, müssen die Parameterwerte mit den angegebenen Einheiten übereinstimmen" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "Dezimalstellen für minimalen Preis" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Mindestanzahl der Dezimalstellen bei der Darstellung der Preisdaten" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "Dezimalstellen für maximalen Preis" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Maximale Anzahl der Dezimalstellen bei der Darstellung der Preisdaten" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "Zulieferer-Preise verwenden" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Lieferanten-Staffelpreise in die Gesamt-Preisberechnungen einbeziehen" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "Kaufverlauf überschreiben" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Historische Bestellungspreise überschreiben die Lieferanten-Staffelpreise" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "Lagerartikel-Preis verwenden" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Preise aus manuell eingegebenen Lagerdaten für Preisberechnungen verwenden" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "Lagerartikelpreis Alter" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Lagerartikel, die älter als diese Anzahl an Tagen sind, von der Preisberechnung ausschließen" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "Variantenpreise verwenden" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "Variantenpreise in die Gesamt-Preisberechnungen einbeziehen" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "Nur aktive Varianten" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "Nur aktive Variantenteile zur Berechnung der Variantenbepreisung verwenden" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "Intervall für Neuberechnung von Preisen" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "Anzahl der Tage bis die Teile-Preisberechnungen automatisch aktualisiert werden" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "Interne Preise" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "Interne Preise für Teile aktivieren" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "Interne Preisüberschreibung" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "Falls verfügbar, überschreiben interne Preise Preispannenberechnungen" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "Labeldruck aktivieren" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "Labeldruck über die Website aktivieren" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "Label Bild DPI" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "DPI-Auflösung bei der Erstellung von Bilddateien für Etikettendruck-Plugins" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "Berichte aktivieren" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "Berichterstellung aktivieren" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "Entwickler-Modus" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "Berichte im Entwickler-Modus generieren (als HTML)" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Seitengröße" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "Standardseitenformat für PDF-Bericht" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "Testberichte aktivieren" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "Erstellung von Test-Berichten aktivieren" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "Testberichte anhängen" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Beim Drucken eines Testberichts dem zugehörigen Lagerbestand eine Kopie des Testberichts beifügen" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "Global einzigartige Seriennummern" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "Seriennummern für Lagerartikel müssen global eindeutig sein" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "Seriennummern automatisch ausfüllen" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "Seriennummern in Formularen automatisch ausfüllen" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "Erschöpften Lagerartikel löschen" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "Legt das Standardverhalten fest, wenn ein Lagerartikel erschöpft ist" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "Losnummer Vorlage" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "Vorlage für die Generierung von Standard-Losnummern für Lagerbestände" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "Bestands-Ablauf" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "Ablaufen von Bestand ermöglichen" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "Abgelaufenen Bestand verkaufen" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "Verkauf von abgelaufenem Bestand erlaubt" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "Bestands-Stehzeit" -#: common/models.py:1658 +#: common/models.py:1697 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:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "Abgelaufenen Bestand verbauen" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "Verbauen von abgelaufenen Bestand erlaubt" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "Bestands-Eigentümerkontrolle" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "Standardsymbol für Lagerort" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "Standardsymbol für Lagerstandort (leer bedeutet kein Symbol)" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "Zeige installierte Lagerartikel" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "Anzeige der installierten Lagerartikel in Bestandstabellen" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "Bauauftragsreferenz-Muster" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Bauaufträge" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "Rücksendungen aktivieren" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "Aktivieren der Rücksendung-Funktion in der Benutzeroberfläche" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "Referenz Muster für Rücksendungen" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Rücksendungen" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "Abgeschlossene Rücksendungen bearbeiten" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "Bearbeitung von Rücksendungen nach Abschluss erlauben" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "Auftragsreferenz-Muster" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Aufträge" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "Auftrag Standardsendung" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "Erstelle eine Standardsendung für Aufträge" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "Abgeschlossene Verkaufsaufträge bearbeiten" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Bearbeitung von Verkaufsaufträgen nach Versand oder Abschluss erlauben" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "Bestellungsreferenz-Muster" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Bestellungen" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "Abgeschlossene Einkaufsaufträge bearbeiten" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Bearbeitung von Einkaufsaufträgen nach Versand oder Abschluss erlauben" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" -msgstr "" +msgstr "Bestellungen automatisch abschließen" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" -msgstr "" +msgstr "Bestellung automatisch als abgeschlossen markieren, wenn der Empfang aller Artikel bestätigt wurde" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "Passwort vergessen aktivieren" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "Registrierung erlauben" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "SSO aktivieren" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "SSO auf den Anmeldeseiten aktivieren" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "SSO Selbstregistrierung aktivieren" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Selbstregistrierung über SSO für Benutzer auf den Anmeldeseiten aktivieren" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "Email-Adresse erforderlich" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "SSO-Benutzer automatisch ausfüllen" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "E-Mail zweimal" -#: common/models.py:1806 +#: common/models.py:1845 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:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "Passwort zweimal" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "Erlaubte Domains" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Anmeldung auf bestimmte Domänen beschränken (kommagetrennt, beginnend mit @)" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "Gruppe bei Registrierung" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "MFA erzwingen" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden." -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "Plugins beim Start prüfen" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Beim Start überprüfen, ob alle Plugins installiert sind - Für Container aktivieren" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "URL-Integration aktivieren" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "Plugins zum Hinzufügen von URLs aktivieren" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "Navigations-Integration aktivieren" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "Plugins zur Integration in die Navigation aktivieren" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "App-Integration aktivieren" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "Plugins zum Hinzufügen von Apps aktivieren" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "Terminplan-Integration aktivieren" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "Geplante Aufgaben aktivieren" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "Ereignis-Integration aktivieren" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "Projektcodes aktivieren" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "Aktiviere Projektcodes für die Verfolgung von Projekten" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "Inventurfunktionen" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Inventur-Funktionen zur Aufzeichnung von Lagerbeständen und zur Berechnung des Lagerwerts aktivieren" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "Externe Standorte ausschließen" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "Lagerartikeln in externen Standorten in der Berechnungen zur Bestandsaufnahme ausschließen" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "Automatische Inventur-Periode" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Anzahl der Tage zwischen automatischen Bestandsaufnahmen (zum Deaktivieren auf Null setzen)" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "Löschintervall für Berichte" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Inventurberichte werden nach der angegebenen Anzahl von Tagen gelöscht" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "Vollständige Namen von Benutzern anzeigen" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "Vollständigen Namen von Benutzern anstatt Benutzername anzeigen" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "Inaktive Teile ausblenden" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Ausblenden inaktiver Teile in den auf der Startseite angezeigten Ergebnissen" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "Abonnierte Teile anzeigen" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "Zeige abonnierte Teile auf der Startseite" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "Abonnierte Kategorien anzeigen" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "Zeige abonnierte Teilkategorien auf der Startseite" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "Neueste Teile anzeigen" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "Zeige neueste Teile auf der Startseite" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "Nicht validierte Stücklisten anzeigen" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "Neueste Bestandänderungen anzeigen" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "Niedrigen Bestand anzeigen" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "Zeige geringen Bestand auf der Startseite" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "Lerren Bestand anzeigen" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "Benötigten Bestand anzeigen" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "Zeige Bestand für Bauaufträge auf der Startseite" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "Abgelaufenen Bestand anzeigen" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "Zeige abgelaufene Lagerbestände auf der Startseite" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "Alten Bestand anzeigen" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "Zeige überfällige Lagerartikel auf der Startseite" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "Ausstehende Bauaufträge anzeigen" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "Zeige ausstehende Bauaufträge auf der Startseite" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "Zeige überfällige Bauaufträge" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "Zeige überfällige Bauaufträge auf der Startseite" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "Ausstehende POs anzeigen" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "Zeige ausstehende POs auf der Startseite" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "Überfällige POs anzeigen" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "Zeige überfällige POs auf der Startseite" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "Ausstehende SOs anzeigen" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "Zeige ausstehende SOs auf der Startseite" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "Überfällige SOs anzeigen" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "Zeige überfällige SOs auf der Startseite" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "Ausstehende Versandaufträge anzeigen" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "Ausstehende Versandaufträge auf der Startseite anzeigen" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "Zeige Neuigkeiten" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "Neuigkeiten auf der Startseite anzeigen" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "Label inline anzeigen" -#: common/models.py:2094 +#: common/models.py:2139 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:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "Standard-Etikettendrucker" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "Einen standardmäßig ausgewählten Etikettendrucker konfigurieren" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "Berichte inline anzeigen" -#: common/models.py:2110 +#: common/models.py:2155 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:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "Teile suchen" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "Teile in der Suchvorschau anzeigen" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "Zulieferteile durchsuchen" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "Zuliefererteile in der Suchvorschau anzeigen" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "Herstellerteile durchsuchen" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "Herstellerteile in der Suchvorschau anzeigen" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "Inaktive Teile ausblenden" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "Inaktive Teile in der Suchvorschau ausblenden" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "Kategorien durchsuchen" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "Teilekategorien in der Suchvorschau anzeigen" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "Bestand durchsuchen" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "Lagerartikel in Suchvorschau anzeigen" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "Nicht verfügbare Artikel ausblenden" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "Nicht verfügbare Lagerartikel aus der Suchvorschau ausschließen" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "Lagerorte durchsuchen" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "Lagerorte in Suchvorschau anzeigen" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "Firmen durchsuchen" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "Firmen in der Suchvorschau anzeigen" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "Bauaufträge durchsuchen" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "Bauaufträge in der Suchvorschau anzeigen" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "Bestellungen durchsuchen" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "Bestellungen in der Suchvorschau anzeigen" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "Inaktive Bestellungen ausblenden" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "Inaktive Bestellungen in der Suchvorschau ausblenden" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "Aufträge durchsuchen" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "Aufträge in der Suchvorschau anzeigen" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "Inaktive Aufträge ausblenden" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "Inaktive Aufträge in der Suchvorschau ausblenden" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "Suche nach Rücksendungen" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "Rücksendungen in der Suchvorschau anzeigen" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "Inaktive Rücksendungen ausblenden" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "Inaktive Rücksendungen in der Suchvorschau ausblenden" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "Anzahl Suchergebnisse" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "Anzahl der Ergebnisse, die in der Vorschau pro Sektion angezeigt werden sollen" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "Regex Suche" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "Reguläre Ausdrücke in Suchabfragen aktivieren" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "Ganzes Wort suchen" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "Suchabfragen liefern Ergebnisse für ganze Wortkombinationen" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "zeige Bestand in Eingabemasken" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "Esc-Taste schließt Formulare" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "Benutze die Esc-Taste, um Formulare zu schließen" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "Fixierter Navigationsleiste" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "Position der Navigationsleiste am oberen Bildschirmrand fixieren" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "Datumsformat" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "Bevorzugtes Format für die Anzeige von Daten" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Teilzeitplanung" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "Zeige Zeitplanung für Teile" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventur" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Zeigt Inventur-Informationen an (falls die Inventurfunktion aktiviert ist)" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "Zeichenkettenlänge in Tabellen" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" -msgstr "" +msgstr "Maximale Länge für Zeichenketten, die in Tabellenansichten angezeigt werden" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "Standardvorlage für Teilebeschriftung" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "Die Teil-Etikettenvorlage, die automatisch ausgewählt werden soll" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "Lagerartikel-Standardvorlage" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "Die Lagerartikel-Etikettenvorlage soll automatisch ausgewählt werden" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "Standardetikettenvorlage für Lagerstandort" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "Die Lagerstandort-Etikettenvorlage, die automatisch ausgewählt werden soll" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "Fehlerberichte empfangen" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "Benachrichtigungen bei Systemfehlern erhalten" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "Preisstaffelungs Anzahl" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Preis" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "Stückpreis für die angegebene Anzahl" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "Endpunkt" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "Endpunkt, an dem dieser Webhook empfangen wird" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "Name für diesen Webhook" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3455,101 +3510,101 @@ msgstr "Name für diesen Webhook" msgid "Active" msgstr "Aktiv" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "Ist dieser Webhook aktiv" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "Token" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "Token für Zugang" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "Geheimnis" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "Shared Secret für HMAC" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "Nachrichten-ID" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "Eindeutige Kennung für diese Nachricht" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "Host" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "Host von dem diese Nachricht empfangen wurde" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "Kopfzeile" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "Header dieser Nachricht" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "Body" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "Body dieser Nachricht" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "Endpunkt, über den diese Nachricht empfangen wurde" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "Bearbeitet" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "ID" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titel" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "Veröffentlicht" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "Autor" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "Zusammenfassung" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "Gelesen" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "Wurde diese Nachricht gelesen?" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3559,31 +3614,31 @@ msgstr "Wurde diese Nachricht gelesen?" msgid "Image" msgstr "Bild" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "Bilddatei" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "Einheitsname muss eine gültige Kennung sein" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "Einheitsname" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Symbol" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "Optionales Einheitssymbol" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definition" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "Einheitsdefinition" @@ -3621,6 +3676,66 @@ msgstr "Artikel wurden aus einer Rücksendung erhalten" msgid "Error raised by plugin" msgstr "Fehler in Plugin aufgetreten" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "Wird ausgeführt" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "Anstehende Aufgaben" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "Geplante Aufgaben" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "Fehlgeschlagene Aufgaben" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "Aufgabe-ID" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "Eindeutige Aufgaben-ID" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "Sperren" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "Sperrzeit" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "Aufgabenname" + +#: common/serializers.py:372 +msgid "Function" +msgstr "Funktion" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "Funktionsname" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "Parameter" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "Aufgaben-Parameter" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "Schlüsselwort Parameter" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "Schlüsselwort Parameter für Aufgaben" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3659,184 +3774,184 @@ msgstr "Teile importiert" msgid "Previous Step" msgstr "Vorheriger Schritt" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "Firmenbeschreibung" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "Firmenbeschreibung" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "Website" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "Firmenwebsite Adresse/URL" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Kontakt-Tel." -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "Kontakt-Telefon" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "Kontakt-Email" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Kontakt" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "Anlaufstelle" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "Link auf externe Firmeninformation" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "ist Kunde" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "Verkaufen Sie Teile an diese Firma?" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "ist Zulieferer" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "Kaufen Sie Teile von dieser Firma?" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "ist Hersteller" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "Produziert diese Firma Teile?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "Standard-Währung für diese Firma" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Firma" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "Firma auswählen" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "Adresstitel" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "Titel zur Beschreibung des Adresseintrages" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "Primäre Adresse" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "Als primäre Adresse festlegen" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "Linie 1" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "Adresszeile 1" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "Linie 2" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "Adresszeile 2" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "Postleitzahl" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "Stadt/Region" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "Postleitzahl Stadt/Region" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "Staat/Provinz" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "Bundesland" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "Land" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "Adresse Land" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "Versandnotizen" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "Notizen für Versandkurier" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "Interne Versandnotizen" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "Versandnotizen für interne Verwendung" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "Link zu Adressinformationen (extern)" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basisteil" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "Teil auswählen" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3848,11 +3963,11 @@ msgstr "Teil auswählen" msgid "Manufacturer" msgstr "Hersteller" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Hersteller auswählen" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3863,67 +3978,67 @@ msgstr "Hersteller auswählen" msgid "MPN" msgstr "MPN" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "Hersteller-Teilenummer" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "Externe URL für das Herstellerteil" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "Teilbeschreibung des Herstellers" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Herstellerteil" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "Parametername" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Wert" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "Parameterwert" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "Einheiten" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "Parametereinheit" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "Packeinheiten müssen mit den Basisteileinheiten kompatibel sein" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "Packeinheiten müssen größer als Null sein" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3938,58 +4053,58 @@ msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren" msgid "Supplier" msgstr "Zulieferer" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Zulieferer auswählen" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "Lagerbestandseinheit (SKU) des Zulieferers" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "Herstellerteil auswählen" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "Teil-URL des Zulieferers" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "Zuliefererbeschreibung des Teils" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "Notiz" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "Basiskosten" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "Mindestpreis" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Verpackungen" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "Teile-Verpackungen" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3999,27 +4114,27 @@ msgstr "Teile-Verpackungen" msgid "Pack Quantity" msgstr "Packmenge" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "Gesamtmenge, die in einer einzelnen Packung geliefert wird. Für Einzelstücke leer lassen." -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "Vielfache" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "Mehrere bestellen" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "Verfügbare Menge von Lieferanten" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "Verfügbarkeit aktualisiert" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "Datum des letzten Updates der Verfügbarkeitsdaten" @@ -4081,10 +4196,10 @@ msgstr "Bild von URL herunterladen" msgid "Delete image" msgstr "Bild löschen" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4099,7 +4214,7 @@ msgstr "Kunde" msgid "Uses default currency" msgstr "verwendet Standard-Währung" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4113,11 +4228,11 @@ msgstr "Telefon" #: company/templates/company/company_base.html:205 #: part/templates/part/part_base.html:528 msgid "Remove Image" -msgstr "Bild entfernen" +msgstr "" #: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" -msgstr "Verknüpftes Bild von dieser Firma entfernen" +msgstr "" #: company/templates/company/company_base.html:208 #: part/templates/part/part_base.html:531 @@ -4129,12 +4244,12 @@ msgstr "Entfernen" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "Bild hochladen" +msgstr "" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "Bild herunterladen" +msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 @@ -4317,7 +4432,7 @@ msgstr "Neuer Parameter" #: company/templates/company/manufacturer_part.html:206 #: templates/js/translated/part.js:1422 msgid "Add Parameter" -msgstr "Parameter hinzufügen" +msgstr "" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" @@ -4344,7 +4459,7 @@ msgid "Addresses" msgstr "Adressen" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4433,20 +4548,20 @@ msgstr "Preisstaffel hinzufügen" #: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" -msgstr "Zuliefererteil QR-Code" +msgstr "" #: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" -msgstr "Barcode mit Zuliefererteil verknüpfen" +msgstr "" #: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" -msgstr "Teilverfügbarkeit aktualisieren" +msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4485,6 +4600,10 @@ msgstr "Firmen" msgid "New Company" msgstr "Neue Firma" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "Label Name" @@ -4501,7 +4620,7 @@ msgstr "Label" msgid "Label template file" msgstr "Label-Vorlage-Datei" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "Aktiviert" @@ -4525,7 +4644,7 @@ msgstr "Höhe [mm]" msgid "Label height, specified in mm" msgstr "Label-Höhe in mm" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "Dateinamen-Muster" @@ -4539,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "Filter" @@ -4557,7 +4676,108 @@ msgstr "QR-Code" msgid "QR code" msgstr "QR-Code" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "Unbekannt" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4570,7 +4790,7 @@ msgstr "Gesamtpreis" msgid "No matching purchase order found" msgstr "Keine passende Bestellung gefunden" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4584,7 +4804,7 @@ msgstr "Keine passende Bestellung gefunden" msgid "Purchase Order" msgstr "Bestellung" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4593,192 +4813,188 @@ msgstr "Bestellung" msgid "Return Order" msgstr "Rücksendeauftrag" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "Unbekannt" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "Gesamtpreis für diese Bestellung" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "Auftragswährung" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "Währung für diesen Auftrag (leer lassen, um Firmenstandard zu verwenden)" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "Kontakt stimmt nicht mit der ausgewählten Firma überein" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "Auftragsbeschreibung (optional)" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "Projektcode für diesen Auftrag auswählen" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "Link auf externe Seite" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Geplantes Lieferdatum für Auftrag." -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "Erstellt von" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "Nutzer oder Gruppe der/die für diesen Auftrag zuständig ist/sind" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "Ansprechpartner für diesen Auftrag" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "Firmenadresse für diesen Auftrag" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "Bestell-Referenz" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "Bestellungs-Status" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "Firma bei der die Teile bestellt werden" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "Zulieferer-Referenz" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "Zulieferer Bestellreferenz" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "Empfangen von" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "Aufgabedatum" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "Datum an dem die Bestellung aufgegeben wurde" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "Datum an dem der Auftrag fertigstellt wurde" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "Teile-Zulieferer muss dem Zulieferer der Bestellung entsprechen" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "Anzahl muss eine positive Zahl sein" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "Firma an die die Teile verkauft werden" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "Kundenreferenz" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "Bestellreferenz" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "Versanddatum" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "Versand von" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "Auftrag kann nicht abgeschlossen werden, da keine Teile zugewiesen wurden" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "Nur ein offener Auftrag kann als abgeschlossen markiert werden" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "Auftrag kann nicht abgeschlossen werden, da unvollständige Sendungen vorhanden sind" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "Auftrag kann nicht abgeschlossen werden, da es unvollständige Positionen gibt" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "Anzahl" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "Position - Referenz" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "Position - Notizen" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "Zieldatum für diesen Einzelposten (leer lassen, um das Zieldatum des Auftrags zu verwenden)" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "Positionsbeschreibung (optional)" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "Kontext" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "Zusätzlicher Kontext für diese Zeile" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "Stückpreis" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "Lieferantenteil muss mit Lieferant übereinstimmen" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "gelöscht" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "Bestellung" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "Zuliefererteil" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4788,327 +5004,327 @@ msgstr "Zuliefererteil" msgid "Received" msgstr "Empfangen" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Preis" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "Preis pro Einheit" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "Wo möchte der Käufer diesen Artikel gelagert haben?" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "Ein virtuelles Teil kann nicht einem Auftrag zugeordnet werden" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "Nur verkaufbare Teile können einem Auftrag zugewiesen werden" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Verkaufspreis" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "Stückverkaufspreis" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "Versendete Menge" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "Versanddatum" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "Lieferdatum" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "Versanddatum" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "Kontrolliert von" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "Benutzer, der diese Sendung kontrolliert hat" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Sendung" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "Sendungsnummer" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "Sendungsverfolgungsnummer" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "Informationen zur Sendungsverfolgung" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "Rechnungsnummer" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "Referenznummer für zugehörige Rechnung" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "Sendung wurde bereits versandt" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "Sendung hat keine zugewiesene Lagerartikel" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "Lagerartikel wurde nicht zugewiesen" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "Kann Lagerartikel keiner Zeile mit einem anderen Teil hinzufügen" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "Kann Lagerartikel keiner Zeile ohne Teil hinzufügen" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "Auftrag gehört nicht zu Sendung" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "Sendung gehört nicht zu Auftrag" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "Position" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "Sendungsnummer-Referenz" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "Position" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "Lagerartikel für Zuordnung auswählen" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "Anzahl für Bestandszuordnung eingeben" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "Rücksendungsreferenz" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "Firma von der die Artikel zurückgeschickt werden" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "Status der Rücksendung" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "Nur serialisierte Artikel können einer Rücksendung zugeordnet werden" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "Artikel zur Rücksendung auswählen" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "Empfangsdatum" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "Das Datum des Empfangs dieses Rücksendeartikels" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Ergebnis" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" -msgstr "" +msgstr "Ergebnis für dieses Zeilenelement" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "Kosten für die Rückgabe oder Reparatur dieses Objektes" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "Bestellung kann nicht verworfen werden" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "Erlaube das Schließen des Auftrags mit unvollständigen Positionen" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "Auftrag hat unvollständige Positionen" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "Der Auftrag ist nicht offen" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "Kaufpreiswährung" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "Zuliefererteil muss ausgewählt werden" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "Bestellung muss angegeben sein" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "Lieferant muss mit der Bestellung übereinstimmen" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "Die Bestellung muss mit dem Lieferant übereinstimmen" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "Position" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "Position stimmt nicht mit Kaufauftrag überein" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "Zielort für empfangene Teile auswählen" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "Losnummer für eingehende Lagerartikel" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "Seriennummern für eingehende Lagerartikel" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Barcode" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "Gescannter Barcode" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "Barcode ist bereits in Verwendung" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "Ganzzahl für verfolgbare Teile erforderlich" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "Positionen müssen angegeben werden" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "Ziel-Lagerort muss angegeben werden" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "Barcode muss eindeutig sein" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "Verkaufspreis-Währung" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "Keine Sendungsdetails angegeben" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "Position ist nicht diesem Auftrag zugeordnet" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "Anzahl muss positiv sein" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "Seriennummern zum Zuweisen eingeben" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "Sendung wurde bereits versandt" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "Sendung ist nicht diesem Auftrag zugeordnet" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "Folgende Serienummern konnten nicht gefunden werden" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "Folgende Seriennummern sind bereits zugewiesen" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" -msgstr "" +msgstr "Artikel der Bestellzeile zurücksenden" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" -msgstr "" +msgstr "Artikel entspricht nicht der Rücksendeschrift" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" -msgstr "" +msgstr "Artikel wurde bereits erhalten" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" -msgstr "" +msgstr "Artikel können nur bei laufenden Bestellungen empfangen werden" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" -msgstr "" +msgstr "Verkaufspreis-Währung" #: order/tasks.py:25 msgid "Overdue Purchase Order" @@ -5235,11 +5451,11 @@ msgstr "Gesamtkosten konnten nicht berechnet werden" #: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" -msgstr "Bestellung QR Code" +msgstr "" #: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" -msgstr "Barcode mit Bestellung verknüpfen" +msgstr "" #: order/templates/order/order_wizard/match_fields.html:9 #: part/templates/part/import_wizard/ajax_match_fields.html:9 @@ -5290,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5428,11 +5644,11 @@ msgstr "Gesamtkosten" #: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" -msgstr "Rücksendung QR-Code" +msgstr "" #: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" -msgstr "Barcode mit Rücksendung verknüpfen" +msgstr "" #: order/templates/order/return_order_sidebar.html:5 msgid "Order Details" @@ -5464,11 +5680,11 @@ msgstr "Abgeschlossene Sendungen" #: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" -msgstr "Verkaufsauftrag QR-Code" +msgstr "" #: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" -msgstr "Barcode mit Bestellung verknüpfen" +msgstr "" #: order/templates/order/sales_order_detail.html:18 msgid "Sales Order Items" @@ -5510,13 +5726,13 @@ msgstr "Stückpreis für {part} auf {price} aktualisiert" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "{part} Stückpreis auf {price} und Menge auf {qty} aktualisiert" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "Teil-ID" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "Name des Teils" @@ -5524,20 +5740,20 @@ msgstr "Name des Teils" msgid "Part Description" msgstr "Beschreibung des Teils" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "IPN (Interne Produktnummer)" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Version" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Schlüsselwörter" @@ -5562,11 +5778,11 @@ msgstr "Standard-Standortnummer" msgid "Default Supplier ID" msgstr "Standard-Lieferantennummer" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variante von" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimaler Bestand" @@ -5576,33 +5792,26 @@ msgstr "Minimaler Bestand" msgid "In Stock" msgstr "Auf Lager" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "Bestellt" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "Benutzt in" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "Im Bau" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "Minimale Kosten" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "Maximale Kosten" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "Eltern ID" @@ -5615,7 +5824,7 @@ msgstr "Name des übergeordneten Teils" msgid "Category Path" msgstr "Pfad zur Kategorie" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5638,51 +5847,51 @@ msgstr "Stücklisten-Position ID" msgid "Parent IPN" msgstr "Übergeordnete IPN" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "Teil IPN" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Niedrigster Preis" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Höchster Preis" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "Eingehende Bestellung" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "Ausgehender Auftrag" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "Lagerartikel produziert von Bauauftrag" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "Lagerartikel für Bauauftrag benötigt" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "Gültig" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "Gesamte Stückliste validieren" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "Diese Option muss ausgewählt werden" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Standard-Lagerort" @@ -5691,380 +5900,375 @@ msgstr "Standard-Lagerort" msgid "Total Stock" msgstr "Gesamtbestand" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "Verfügbarer Bestand" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "Menge für die Preisberechnung" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Teil-Kategorie" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "Teil-Kategorien" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "Standard-Lagerort für Teile dieser Kategorie" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Strukturell" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Teile können nicht direkt einer strukturellen Kategorie zugeordnet werden, können aber untergeordneten Kategorien zugeordnet werden." -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "Standard Stichwörter" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Symbol" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "Symbol (optional)" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "Sie können diese Teilekategorie nicht als strukturell festlegen, da ihr bereits Teile zugewiesen sind!" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "Ungültige Auswahl für übergeordnetes Teil" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" -msgstr "" +msgstr "Teil '{self}' kann im BOM nicht für '{parent}' (rekursiv) verwendet werden" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" -msgstr "" +msgstr "Teil '{parent}' wird im BOM für '{self}' (rekursiv) verwendet" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "IPN muss mit Regex-Muster {pattern} übereinstimmen" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "Ein Lagerartikel mit dieser Seriennummer existiert bereits" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "Teil mit diesem Namen, IPN und Revision existiert bereits." -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "Strukturellen Teilekategorien können keine Teile zugewiesen werden!" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "Name des Teils" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "Ist eine Vorlage" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "Ist dieses Teil eine Vorlage?" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "Ist dieses Teil eine Variante eines anderen Teils?" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "Artikelbeschreibung (optional)" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "Kategorie" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "Teile-Kategorie" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "Interne Teilenummer" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "Revisions- oder Versionsnummer" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Standard Zulieferer" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "Standard Zuliefererteil" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "Standard Ablaufzeit" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "Ablauf-Zeit (in Tagen) für Bestand dieses Teils" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "Minimal zulässiger Bestand" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "Maßeinheit für diesen Teil" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "Kann dieses Teil zum Bauauftrag von anderen genutzt werden?" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "Hat dieses Teil Tracking für einzelne Objekte?" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "Kann dieses Teil an Kunden verkauft werden?" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "Ist dieses Teil aktiv?" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "Prüfsumme der Stückliste gespeichert" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "Stückliste kontrolliert von" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "BOM Kontrolldatum" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "Erstellungs-Nutzer" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "Verantwortlicher Besitzer für dieses Teil" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Letzte Inventur" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "Mehrere verkaufen" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "Währung für die Berechnung der Preise im Cache" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "Minimale Stücklisten Kosten" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "Minimale Kosten für Teile" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "Maximale Stücklisten Kosten" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "Maximale Kosten für Teile" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "Minimale Einkaufskosten" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "Minimale historische Kaufkosten" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "Maximale Einkaufskosten" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "Maximale historische Einkaufskosten" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "Minimaler interner Preis" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "Minimale Kosten basierend auf den internen Staffelpreisen" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "Maximaler interner Preis" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "Maximale Kosten basierend auf internen Preisstaffeln" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "Minimaler Lieferantenpreis" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "Mindestpreis für Teil von externen Lieferanten" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "Maximaler Lieferantenpreis" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "Maximaler Preis für Teil von externen Lieferanten" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "Minimale Variantenkosten" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "Berechnete minimale Kosten für Variantenteile" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "Maximale Variantenkosten" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "Berechnete maximale Kosten für Variantenteile" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "Mindestkosten überschreiben" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "Maximale Kosten überschreiben" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "Berechnete Mindestkosten" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "Berechnete Maximalkosten" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "Mindestverkaufspreis" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "Mindestverkaufspreis basierend auf Staffelpreisen" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "Maximaler Verkaufspreis" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "Maximalverkaufspreis basierend auf Staffelpreisen" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "Mindestverkaufskosten" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "Minimaler historischer Verkaufspreis" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "Maximale Verkaufskosten" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "Maximaler historischer Verkaufspreis" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "Teil für die Inventur" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "Stückzahl" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "Anzahl einzelner Bestandseinträge zum Zeitpunkt der Inventur" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "Insgesamt verfügbarer Lagerbestand zum Zeitpunkt der Inventur" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6076,322 +6280,318 @@ msgstr "Insgesamt verfügbarer Lagerbestand zum Zeitpunkt der Inventur" msgid "Date" msgstr "Datum" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "Datum der Inventur" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "Zusätzliche Notizen" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "Benutzer, der diese Inventur durchgeführt hat" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "Mindestbestandswert" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "Geschätzter Mindestwert des vorhandenen Bestands" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "Maximaler Bestandswert" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "Geschätzter Maximalwert des vorhandenen Bestands" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Bericht" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "Inventur-Berichtsdatei (intern generiert)" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Anzahl der Teile" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "Anzahl der Teile, die von der Inventur abgedeckt werden" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "Benutzer, der diesen Inventurbericht angefordert hat" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "Test-Vorlagen können nur für verfolgbare Teile angelegt werden" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "Ein Test mit diesem Namen besteht bereits für dieses Teil" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "Test-Name" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "Namen für diesen Test eingeben" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "Test-Beschreibung" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "Beschreibung für diesen Test eingeben" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Benötigt" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "Muss dieser Test erfolgreich sein?" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "Erfordert Wert" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "Muss für diesen Test ein Wert für das Test-Ergebnis eingetragen werden?" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "Anhang muss eingegeben werden" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "Muss für diesen Test ein Anhang für das Test-Ergebnis hinzugefügt werden?" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "Checkbox-Parameter können keine Einheiten haben" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "Checkbox-Parameter können keine Auswahl haben" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "Auswahl muss einzigartig sein" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "Physikalische Einheiten für diesen Parameter" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "Parameter-Beschreibung" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "Checkbox" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "Ist dieser Parameter eine Checkbox?" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "Auswahlmöglichkeiten" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "Gültige Optionen für diesen Parameter (durch Kommas getrennt)" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" -msgstr "" +msgstr "Ungültige Auswahl für Parameterwert" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "Ausgangsteil" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "Wert" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Standard-Wert" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "Standard Parameter Wert" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "Teilnummer oder Teilname" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "Eindeutige Teil-ID" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "IPN-Wert des Teils" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "Stufe" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "Stücklistenebene" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "Stücklisten-Position" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "Untergeordnetes Teil" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "Diese Stücklisten-Position ist optional" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "Diese Stücklisten-Position ist ein Verbrauchsartikel (sie wird nicht in Bauaufträgen verfolgt)" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Überschuss" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "Referenz der Postion auf der Stückliste" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "Notizen zur Stücklisten-Position" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "Prüfsumme" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "überprüft" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "Diese Stücklistenposition wurde validiert" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "Wird vererbt" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Diese Stücklisten-Position wird in die Stücklisten von Teil-Varianten vererbt" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Varianten zulassen" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Bestand von Varianten kann für diese Stücklisten-Position verwendet werden" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "Menge muss eine Ganzzahl sein" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "Zuliefererteil muss festgelegt sein" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "Stücklisten Ersatzteile" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "Übergeordnete Stücklisten Position" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "Ersatzteil" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "Teil 1" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "Teil 2" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "verknüpftes Teil auswählen" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "Teil-Beziehung kann nicht zwischen einem Teil und sich selbst erstellt werden" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "Doppelte Beziehung existiert bereits" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "Kaufwährung dieses Lagerartikels" @@ -6487,197 +6687,197 @@ msgstr "Herstellerteil mit dieser MPN existiert bereits" msgid "Supplier part matching this SKU already exists" msgstr "Lieferantenteil mit dieser SKU existiert bereits" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Teil duplizieren" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "Initiale Daten von anderem Teil kopieren" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Initialer Lagerbestand" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "Erstelle Teil mit Ausgangsbestand" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "Lieferanteninformationen" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "Lieferanteninformationen zu diesem Teil hinzufügen" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "Kategorieparameter kopieren" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "Parametervorlagen aus der ausgewählten Teilkategorie kopieren" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" -msgstr "" +msgstr "Vorhandenes Bild" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" -msgstr "" +msgstr "Dateiname eines vorhandenen Teilbildes" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "Bilddatei existiert nicht" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "Inventurbericht auf ein bestimmtes Teil und alle Variantenteile beschränken" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "Inventurbericht auf eine bestimmte Teilekategorie und alle untergeordneten Kategorien beschränken" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "Inventurbericht auf einen bestimmten Lagerort und alle untergeordneten Lagerorte beschränken" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "Externen Bestand ausschließen" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "Lagerartikel an externen Orten ausschließen" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "Bericht generieren" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "Erstelle Berichtsdatei mit berechneten Inventurdaten" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "Teile aktualisieren" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "Angegebene Teile mit berechneten Inventurdaten aktualisieren" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "Inventur-Funktionalität ist nicht aktiviert" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "Berechneten Wert für Mindestpreis überschreiben" -#: part/serializers.py:1190 -msgid "Minimum price currency" -msgstr "" - #: part/serializers.py:1198 +msgid "Minimum price currency" +msgstr "Mindestpreis Währung" + +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" -msgstr "" +msgstr "Berechneten Wert für maximalen Preis überschreiben" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" -msgstr "" +msgstr "Maximalpreis Währung" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "Aktualisieren" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "Preis für dieses Teil aktualisieren" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" -msgstr "" +msgstr "Konnte nicht von den angegebenen Währungen in {default_currency} umrechnen" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" -msgstr "" +msgstr "Mindestpreis darf nicht größer als der Maximalpreis sein" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" -msgstr "" +msgstr "Der Maximalpreis darf nicht kleiner als der Mindestpreis sein" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "Teil auswählen, von dem Stückliste kopiert wird" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "Bestehende Daten entfernen" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "Bestehende Stücklisten-Positionen vor dem Kopieren entfernen" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "Vererbtes einschließen" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "Stücklisten-Positionen einbeziehen, die von Vorlage-Teilen geerbt werden" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "Ungültige Zeilen überspringen" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "Aktiviere diese Option, um ungültige Zeilen zu überspringen" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "Ersatzteile kopieren" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "Ersatzteile beim Duplizieren von Stücklisten-Positionen kopieren" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "Bestehende Stückliste löschen" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "Bestehende Stücklisten-Positionen vor dem Importieren entfernen" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "Keine Teilspalte angegeben" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "Mehrere übereinstimmende Teile gefunden" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "Keine passenden Teile gefunden" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "Teil ist nicht als Komponente angelegt" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "Menge nicht angegeben" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "Ungültige Menge" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "Mindestens eine Stückliste-Position ist erforderlich" @@ -6718,16 +6918,16 @@ msgstr "Sie haben keine Berechtigung zum Bearbeiten der Stückliste." #: part/templates/part/bom.html:15 msgid "The BOM this part has been changed, and must be validated" -msgstr "" +msgstr "Die Stückliste für hat sich geändert und muss kontrolliert werden" #: part/templates/part/bom.html:17 #, python-format msgid "This BOM was last checked by %(checker)s on %(check_date)s" -msgstr "" +msgstr "Die Stückliste wurde zuletzt von %(checker)s am %(check_date)s kontrolliert" #: part/templates/part/bom.html:21 msgid "This BOM has not been validated." -msgstr "" +msgstr "Die Stückliste wurde noch nicht kontrolliert." #: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" @@ -6838,7 +7038,7 @@ msgid "Add stocktake information" msgstr "Inventurinformationen hinzufügen" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -6940,15 +7140,15 @@ msgstr "Teil-Hersteller" #: part/templates/part/detail.html:659 msgid "Related Part" -msgstr "verknüpftes Teil" +msgstr "" #: part/templates/part/detail.html:667 msgid "Add Related Part" -msgstr "verknüpftes Teil hinzufügen" +msgstr "" #: part/templates/part/detail.html:752 msgid "Add Test Result Template" -msgstr "Testergebnis-Vorlage hinzufügen" +msgstr "" #: part/templates/part/import_wizard/ajax_part_upload.html:29 #: part/templates/part/import_wizard/part_upload.html:14 @@ -7124,31 +7324,27 @@ msgstr "Nach Seriennummer suchen" #: part/templates/part/part_base.html:444 msgid "Part QR Code" -msgstr "Teil-QR-Code" +msgstr "" #: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" -msgstr "Barcode mit Teil verknüpfen" - -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "Teil" +msgstr "" #: part/templates/part/part_base.html:512 msgid "Calculate" -msgstr "Berechnen" +msgstr "" #: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" -msgstr "Verknüpftes Bild von diesem Teil entfernen" +msgstr "" #: part/templates/part/part_base.html:580 msgid "No matching images found" -msgstr "Keine passenden Bilder gefunden" +msgstr "" #: part/templates/part/part_base.html:676 msgid "Hide Part Details" -msgstr "Teildetails ausblenden" +msgstr "" #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:76 #: part/templates/part/prices.html:227 templates/js/translated/pricing.js:485 @@ -7237,7 +7433,7 @@ msgstr "Preis aktualisieren" #: part/templates/part/prices.html:17 msgid "Override Part Pricing" -msgstr "" +msgstr "Artikelpreise überschreiben" #: part/templates/part/prices.html:18 #: templates/InvenTree/settings/settings_staff_js.html:80 @@ -7248,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "Bearbeiten" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7282,7 +7478,7 @@ msgstr "Variantenpreise" #: part/templates/part/prices.html:106 msgid "Pricing Overrides" -msgstr "" +msgstr "Preisüberschreitungen" #: part/templates/part/prices.html:113 msgid "Overall Pricing" @@ -7321,7 +7517,7 @@ msgstr "Verkaufspreisstaffel hinzufügen" #: part/templates/part/pricing_javascript.html:24 msgid "Update Pricing" -msgstr "Preise aktualisieren" +msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/part.js:704 #: templates/js/translated/part.js:2140 templates/js/translated/part.js:2142 @@ -7402,11 +7598,15 @@ msgstr "Teilbild nicht gefunden" msgid "Part Pricing" msgstr "Teilbepreisung" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "Keine Aktion angegeben" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Keine passende Aktion gefunden" @@ -7426,19 +7626,19 @@ msgstr "Barcode entspricht einem bereits vorhandenen Artikel" #: plugin/base/barcodes/api.py:293 msgid "No matching part data found" -msgstr "" +msgstr "Keine passenden Teiledaten gefunden" #: plugin/base/barcodes/api.py:310 msgid "No matching supplier parts found" -msgstr "" +msgstr "Keine passenden Zulieferteile gefunden" #: plugin/base/barcodes/api.py:314 msgid "Multiple matching supplier parts found" -msgstr "" +msgstr "Mehrere passende Zulieferteile gefunden" #: plugin/base/barcodes/api.py:338 msgid "Matched supplier part" -msgstr "" +msgstr "Zulieferteil zugeordnet" #: plugin/base/barcodes/api.py:387 msgid "Item has already been received" @@ -7446,11 +7646,11 @@ msgstr "Artikel wurde bereits erhalten" #: plugin/base/barcodes/api.py:424 msgid "No match for supplier barcode" -msgstr "" +msgstr "Keine Übereinstimmung für Zulieferbarcode" #: plugin/base/barcodes/api.py:467 msgid "Multiple matching line items found" -msgstr "" +msgstr "Mehrere passende Elemente gefunden" #: plugin/base/barcodes/api.py:470 msgid "No matching line item found" @@ -7464,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "Unzureichender Bestand verfügbar" @@ -7563,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "Labeldruck fehlgeschlagen" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "InvenTree Barcodes" @@ -7575,6 +7787,7 @@ msgstr "Bietet native Unterstützung für Barcodes" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7643,6 +7856,22 @@ msgstr "Debug-Modus" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "Seitengröße für das Labelblatt" @@ -7663,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "Einen Rahmen um jedes Label drucken" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "Querformat" @@ -7735,84 +7964,112 @@ msgstr "Unterstützt das Scannen von TME-Barcodes" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" +msgstr "" + +#: plugin/models.py:30 msgid "Plugin Configuration" msgstr "Plugin-Konfiguration" -#: plugin/models.py:30 +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "Plugin-Konfigurationen" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "Schlüssel" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "Schlüssel des Plugins" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "Name des Plugins" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "Paket-Name" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "Ist das Plugin aktiv" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "Installiert" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "Beispiel-Plugin" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "Integriertes Plugin" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Plugin" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "Methode" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "Kein Autor gefunden" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7857,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "InvenTree Mitwirkende" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "Quell-URL" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Quelle für das Paket - dies kann eine eigene Registry oder ein VCS-Pfad sein" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "Paket-Name" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Name für das Plugin-Paket - kann auch einen Versionstext enthalten" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "Version" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "Plugin-Installation bestätigen" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Dies wird dieses Plugin sofort in die aktuelle Instanz installieren. Die Instanz wird sofort in Wartung gehen." -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "Installation nicht bestätigt" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "Entweder Paketname oder URL muss angegeben werden" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" -msgstr "" +msgstr "Neuladen erzwingen" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" -msgstr "" +msgstr "Erzwinge ein erneutes Laden der Plugin-Registrierung, auch wenn sie bereits geladen ist" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "Plugin aktivieren" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "Dieses Plugin aktivieren" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "Keine korrekten Objekte für Vorlage gegeben" @@ -7950,103 +8221,103 @@ msgstr "US-Legal" msgid "Letter" msgstr "US-Letter" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "Vorlagen Name" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "Bericht-Vorlage Datei" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "Bericht-Vorlage Beschreibung" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "Bericht Revisionsnummer (autom. erhöht)" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "Seitengröße für PDF-Berichte" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "Muster für die Erstellung von Berichtsdateinamen" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "Bericht-Vorlage ist ein" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Lagerartikel-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "einfügen Installiert in Tests" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "Test-Ergebnisse für Lagerartikel in Baugruppen einschließen" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "Bauauftrag Filter" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Bau-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "Teil Filter" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Teile-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "Bestellungs-Abfragefilter" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "Auftrags-Abfragefilter" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "Snippet" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "Berichts-Snippet" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "Snippet-Beschreibung" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "Ressource" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "Berichts-Ressource" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "Ressource-Beschreibung" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8087,9 +8358,9 @@ msgstr "Summe" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8113,12 +8384,12 @@ msgid "Test Results" msgstr "Testergebnisse" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "Test" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "Ergebnis" @@ -8144,32 +8415,32 @@ msgid "Installed Items" msgstr "Verbaute Objekte" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Seriennummer" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "Standort-ID" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "Ortsname" @@ -8178,56 +8449,56 @@ msgstr "Ortsname" msgid "Location Path" msgstr "Lagerortpfad" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "Lagerartikel ID" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "Statuscode" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "Zuliefererteil-ID" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "Zulieferer ID" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "Lieferant" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "Kunden ID" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "verbaut in" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "Bauauftrag-ID" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "Auftrags-ID" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "Bestellungs-ID" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "Überprüfung erforderlich" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "Löschen wenn leer" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8237,56 +8508,56 @@ msgstr "Ablaufdatum" msgid "External Location" msgstr "Externer Standort" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "überfällig" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "Menge ist erforderlich" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "Gültiges Teil muss angegeben werden" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "Der angegebene Lieferantenartikel existiert nicht" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Seriennummern können für nicht verfolgbare Teile nicht angegeben werden" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8298,12 +8569,12 @@ msgstr "Bestand-Lagerort" msgid "Stock Locations" msgstr "Bestand-Lagerorte" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Besitzer" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "Besitzer auswählen" @@ -8333,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "Sie können diesen Lagerort nicht als strukturell markieren, da sich bereits Lagerartikel darin befinden!" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "Lagerartikel können nicht in strukturelle Lagerorte abgelegt werden!" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "Für virtuelle Teile können keine Lagerartikel erstellt werden" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "Anzahl muss für Objekte mit Seriennummer 1 sein" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Seriennummer kann nicht gesetzt werden wenn die Anzahl größer als 1 ist" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "Teil kann nicht zu sich selbst gehören" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "Teil muss eine Referenz haben wenn is_building wahr ist" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "Referenz verweist nicht auf das gleiche Teil" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "Eltern-Lagerartikel" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "Basis-Teil" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "Verpackung, in der dieser Lagerartikel gelagert ist" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "Ist dieses Teil in einem anderen verbaut?" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "Losnummer für diesen Lagerartikel" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "Bestand" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "Quellbau" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "Bauauftrag für diesen Lagerartikel" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "Quelle Bestellung" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "Bestellung für diesen Lagerartikel" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "Ziel-Auftrag" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Ablaufdatum für Lagerartikel. Bestand wird danach als abgelaufen gekennzeichnet" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "Löschen wenn leer" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "Diesen Lagerartikel löschen wenn der Bestand aufgebraucht ist" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "Preis für eine Einheit bei Einkauf" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "In Teil umgewandelt" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "Teil ist nicht verfolgbar" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "Seriennummern existieren bereits" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "Artikel wurde einem Kundenauftrag zugewiesen" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "Lagerartikel ist in anderem Element verbaut" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "Lagerartikel enthält andere Artikel" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "Artikel wurde einem Kunden zugewiesen" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "Lagerartikel wird aktuell produziert" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "Artikel duplizeren" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "Lagerartikel müssen auf dasselbe Teil verweisen" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "Lagerartikel müssen auf dasselbe Lieferantenteil verweisen" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "Status-Codes müssen zusammenpassen" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "Lagerartikel kann nicht bewegt werden, da kein Bestand vorhanden ist" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "Wert muss für diesen Test angegeben werden" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "Anhang muss für diesen Test hochgeladen werden" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "Name des Tests" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "Testergebnis" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "Test Ausgabe Wert" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "Test Ergebnis Anhang" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "Test Notizen" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "Seriennummer ist zu lang" @@ -8559,157 +8830,161 @@ msgstr "Seriennummer ist zu lang" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "Einkaufspreis dieses Lagerartikels, pro Einheit oder Verpackungseinheit" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "Anzahl der zu serialisierenden Lagerartikel eingeben" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "Anzahl darf nicht die verfügbare Menge überschreiten ({q})" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "Seriennummern für neue Teile eingeben" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "Ziel-Bestand" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "Optionales Notizfeld" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "Seriennummern können diesem Teil nicht zugewiesen werden" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "Lagerartikel für Installation auswählen" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr " Transaktionsnotizen hinzufügen (optional)" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "Lagerartikel ist nicht verfügbar" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "Ausgewähltes Teil ist nicht in der Stückliste" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "Ziel Lagerort für unverbautes Objekt" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "Wählen Sie einen Teil aus, zu dem dieser Lagerartikel geändert werden soll" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "Das ausgewählte Teil ist keine gültige Option für die Umwandlung" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "Ziel Lagerort für zurückgegebene Artikel" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "Teil muss verkaufbar sein" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "Artikel ist einem Kundenauftrag zugeordnet" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "Artikel ist einem Fertigungsauftrag zugeordnet" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "Kunde zum Zuweisen von Lagerartikel" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "Ausgewählte Firma ist kein Kunde" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "Notizen zur Lagerzuordnung" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "Eine Liste der Lagerbestände muss angegeben werden" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "Notizen zur Lagerartikelzusammenführung" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "Unterschiedliche Lieferanten erlauben" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Lieferanten erlauben" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "Unterschiedliche Status erlauben" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Status-Codes erlauben" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "Mindestens zwei Lagerartikel müssen angegeben werden" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "Primärschlüssel Lagerelement" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "Bestandsbewegungsnotizen" @@ -8760,7 +9035,7 @@ msgstr "Alle Testergebnisse für diesen Lagerartikel löschen" #: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" -msgstr "Testergebnis hinzufügen" +msgstr "" #: stock/templates/stock/item_base.html:33 msgid "Locate stock item" @@ -8846,7 +9121,7 @@ msgid "Delete stock item" msgstr "Lagerartikel löschen" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Bauauftrag" @@ -8912,7 +9187,7 @@ msgid "Available Quantity" msgstr "Verfügbare Menge" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "Kein Lagerort gesetzt" @@ -8950,15 +9225,15 @@ msgstr "" #: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" -msgstr "Bestandsstatus bearbeiten" +msgstr "" #: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" -msgstr "Lagerartikel-QR-Code" +msgstr "" #: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" -msgstr "Barcode mit Lagerartikel verknüpfen" +msgstr "" #: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." @@ -8974,11 +9249,11 @@ msgstr "Diese Aktion kann nicht einfach rückgängig gemacht werden" #: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" -msgstr "Lagerartikel umwandeln" +msgstr "" #: stock/templates/stock/item_base.html:662 msgid "Return to Stock" -msgstr "zurück ins Lager" +msgstr "" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." @@ -9061,15 +9336,15 @@ msgstr "" #: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" -msgstr "Lagerort an diesen Ort eingescannt" +msgstr "" #: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" -msgstr "QR-Code für diesen Lagerort" +msgstr "" #: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" -msgstr "Barcode mit Lagerort verknüpfen" +msgstr "" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." @@ -9143,71 +9418,71 @@ msgstr "Index" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "Abonnierte Teile" +msgstr "" #: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "Abonnierte Kategorien" +msgstr "" #: templates/InvenTree/index.html:62 msgid "Latest Parts" -msgstr "neueste Teile" +msgstr "" #: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" -msgstr "Stücklisten erwarten Kontrolle" +msgstr "" #: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "kürzlich aktualisiert" +msgstr "" #: templates/InvenTree/index.html:134 msgid "Depleted Stock" -msgstr "Verbrauchter Bestand" +msgstr "" #: templates/InvenTree/index.html:148 msgid "Required for Build Orders" -msgstr "Für Bauaufträge benötigt" +msgstr "" #: templates/InvenTree/index.html:156 msgid "Expired Stock" -msgstr "abgelaufener Bestand" +msgstr "" #: templates/InvenTree/index.html:172 msgid "Stale Stock" -msgstr "Bestand überfällig" +msgstr "" #: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "laufende Bauaufträge" +msgstr "" #: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "überfällige Bauaufträge" +msgstr "" #: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" -msgstr "ausstehende Bestellungen" +msgstr "" #: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" -msgstr "überfällige Bestellungen" +msgstr "" #: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" -msgstr "ausstehende Aufträge" +msgstr "" #: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" -msgstr "überfällige Aufträge" +msgstr "" #: templates/InvenTree/index.html:299 msgid "InvenTree News" -msgstr "InvenTree Neuigkeiten" +msgstr "" #: templates/InvenTree/index.html:301 msgid "Current News" -msgstr "Aktuelle Neuigkeiten" +msgstr "" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" @@ -9237,11 +9512,11 @@ msgstr "Benachrichtigungen" #: templates/InvenTree/notifications/notifications.html:38 msgid "No unread notifications found" -msgstr "Keine ungelesenen Benachrichtigungen" +msgstr "" #: templates/InvenTree/notifications/notifications.html:58 msgid "No notification history found" -msgstr "Kein Benachrichtigungsverlauf" +msgstr "" #: templates/InvenTree/notifications/notifications.html:65 msgid "Delete all read notifications" @@ -9250,7 +9525,7 @@ msgstr "Lösche alle gelesenen Benachrichtigungen" #: templates/InvenTree/notifications/notifications.html:89 #: templates/js/translated/notification.js:85 msgid "Delete Notification" -msgstr "Benachrichtigung löschen" +msgstr "" #: templates/InvenTree/notifications/sidebar.html:8 msgid "Inbox" @@ -9413,11 +9688,6 @@ msgstr "Meldung" msgid "Plugin information" msgstr "Plugin-Informationen" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "Version" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "keine Versionsinformation angegeben" @@ -9546,28 +9816,28 @@ msgstr "Einstellungen ändern" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" -msgstr "Plugin-Einstellungen bearbeiten" +msgstr "" #: templates/InvenTree/settings/settings_js.html:60 msgid "Edit Notification Setting" -msgstr "Benachrichtigungs-Einstellungen bearbeiten" +msgstr "" #: templates/InvenTree/settings/settings_js.html:63 msgid "Edit Global Setting" -msgstr "Allgemeine Einstellungen bearbeiten" +msgstr "" #: templates/InvenTree/settings/settings_js.html:65 msgid "Edit User Setting" -msgstr "Benutzereinstellungen bearbeiten" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:49 msgid "Rate" -msgstr "Kurs" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Löschen" @@ -9588,9 +9858,9 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" -msgstr "Gruppe" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:175 #: templates/InvenTree/settings/settings_staff_js.html:189 @@ -9604,17 +9874,17 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:285 msgid "No category parameter templates found" -msgstr "Keine Kategorie-Parametervorlagen gefunden" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 #: templates/js/translated/part.js:1645 msgid "Edit Template" -msgstr "Vorlage bearbeiten" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 #: templates/js/translated/part.js:1646 msgid "Delete Template" -msgstr "Vorlage löschen" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:326 msgid "Edit Category Parameter Template" @@ -9622,15 +9892,15 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:353 msgid "Delete Category Parameter Template" -msgstr "Kategorieparametervorlage löschen" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:388 msgid "Create Category Parameter Template" -msgstr "Kategorieparametervorlage anlegen" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:418 msgid "Create Part Parameter Template" -msgstr "Teilparametervorlage anlegen" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:440 msgid "No stock location types found" @@ -9854,7 +10124,7 @@ msgstr "%(time)s vor" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "Möchten Sie die ausgewählte E-Mail-Adresse wirklich entfernen?" +msgstr "" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" @@ -10044,7 +10314,7 @@ msgstr "Kein Mitglied?" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "Anmelden" @@ -10124,7 +10394,7 @@ msgstr "Die Registrierung ist derzeit geschlossen." #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "Zurück zur Anmeldeseite" @@ -10253,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "Bei den folgenden Teilen gibt es wenige Lagerartikel" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "Benötigte Menge" @@ -10273,87 +10543,87 @@ msgstr "Mindestmenge" #: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" -msgstr "Keine Antwort" +msgstr "" #: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" -msgstr "keine Antwort vom InvenTree Server" +msgstr "" #: templates/js/translated/api.js:232 msgid "Error 400: Bad request" -msgstr "Fehler 400: Fehlerhafte Anfrage" +msgstr "" #: templates/js/translated/api.js:233 msgid "API request returned error code 400" -msgstr "Fehler-Code 400 zurückgegeben" +msgstr "" #: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" -msgstr "Fehler 401: Nicht Angemeldet" +msgstr "" #: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" -msgstr "Authentication Kredentials nicht angegeben" +msgstr "" #: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" -msgstr "Fehler 403: keine Berechtigung" +msgstr "" #: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "Fehlende Berechtigung für diese Aktion" +msgstr "" #: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" -msgstr "Fehler 404: Ressource nicht gefunden" +msgstr "" #: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" -msgstr "Die angefragte Ressource kann auf diesem Server nicht gefunden werden" +msgstr "" #: templates/js/translated/api.js:252 msgid "Error 405: Method Not Allowed" -msgstr "Fehler 405: Methode nicht erlaubt" +msgstr "" #: templates/js/translated/api.js:253 msgid "HTTP method not allowed at URL" -msgstr "HTTP-Methode für diese URL nicht erlaubt" +msgstr "" #: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "Fehler 408: Zeitüberschreitung" +msgstr "" #: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" -msgstr "Verbindungszeitüberschreitung bei der Datenanforderung" +msgstr "" #: templates/js/translated/api.js:261 msgid "Error 503: Service Unavailable" -msgstr "Fehler 503: Service nicht erreichbar" +msgstr "" #: templates/js/translated/api.js:262 msgid "The server is currently unavailable" -msgstr "Der Server ist derzeit nicht erreichbar" +msgstr "" #: templates/js/translated/api.js:265 msgid "Unhandled Error Code" -msgstr "Unbehandelter Fehler-Code" +msgstr "" #: templates/js/translated/api.js:266 msgid "Error code" -msgstr "Fehler-Code" +msgstr "" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" -msgstr "Alle ausgewählten anhänge werden gelöscht" +msgstr "" #: templates/js/translated/attachment.js:129 msgid "Delete Attachments" -msgstr "Anhänge entfernen" +msgstr "" #: templates/js/translated/attachment.js:205 msgid "Delete attachments" -msgstr "Anhänge löschen" +msgstr "" #: templates/js/translated/attachment.js:253 msgid "Attachment actions" @@ -10361,60 +10631,60 @@ msgstr "" #: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "Keine Anhänge gefunden" +msgstr "" #: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "Anhang bearbeiten" +msgstr "" #: templates/js/translated/attachment.js:346 msgid "Upload Date" -msgstr "Hochladedatum" +msgstr "" #: templates/js/translated/attachment.js:366 msgid "Edit attachment" -msgstr "Anhang bearbeiten" +msgstr "" #: templates/js/translated/attachment.js:374 msgid "Delete attachment" -msgstr "Anhang löschen" +msgstr "" #: templates/js/translated/barcode.js:43 msgid "Scan barcode data here using barcode scanner" -msgstr "Barcode Daten hier mit Barcode Scanner scannen" +msgstr "" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "Barcode-Daten eingeben" +msgstr "" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" -msgstr "Barcode mittels angeschlossener Webcam scannen" +msgstr "" #: templates/js/translated/barcode.js:138 msgid "Enter optional notes for stock transfer" -msgstr "Optionale Notizen zu Bestandsübertragung eingeben" +msgstr "" #: templates/js/translated/barcode.js:139 msgid "Enter notes" -msgstr "Notizen eingeben" +msgstr "" #: templates/js/translated/barcode.js:188 msgid "Server error" -msgstr "Server-Fehler" +msgstr "" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" -msgstr "Unbekannte Antwort von Server erhalten" +msgstr "" #: templates/js/translated/barcode.js:252 #: templates/js/translated/modals.js:1120 msgid "Invalid server response" -msgstr "Ungültige Antwort von Server" +msgstr "" #: templates/js/translated/barcode.js:372 msgid "Scan barcode data" -msgstr "Barcode Daten scannen" +msgstr "" #: templates/js/translated/barcode.js:420 templates/navbar.html:114 msgid "Scan Barcode" @@ -10422,85 +10692,85 @@ msgstr "Barcode scannen" #: templates/js/translated/barcode.js:458 msgid "No URL in response" -msgstr "keine URL in der Antwort" +msgstr "" #: templates/js/translated/barcode.js:498 msgid "This will remove the link to the associated barcode" -msgstr "Dadurch wird der Link zu dem zugehörigen Barcode entfernt" +msgstr "" #: templates/js/translated/barcode.js:504 msgid "Unlink" -msgstr "Entfernen" +msgstr "" #: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 msgid "Remove stock item" -msgstr "Lagerartikel entfernen" +msgstr "" #: templates/js/translated/barcode.js:610 msgid "Scan Stock Items Into Location" -msgstr "Lagerartikel in Lagerort buchen" +msgstr "" #: templates/js/translated/barcode.js:612 msgid "Scan stock item barcode to check in to this location" -msgstr "Barcode des Lagerartikels scannen um ihn an diesen Ort einzuchecken" +msgstr "" #: templates/js/translated/barcode.js:615 #: templates/js/translated/barcode.js:812 msgid "Check In" -msgstr "Einbuchen" +msgstr "" #: templates/js/translated/barcode.js:647 msgid "No barcode provided" -msgstr "Kein Barcode vorhanden" +msgstr "" #: templates/js/translated/barcode.js:687 msgid "Stock Item already scanned" -msgstr "Lagerartikel bereits gescannt" +msgstr "" #: templates/js/translated/barcode.js:691 msgid "Stock Item already in this location" -msgstr "Lagerartikel besteht bereits in diesem Lagerort" +msgstr "" #: templates/js/translated/barcode.js:698 msgid "Added stock item" -msgstr "Lagerartikel hinzugefügt" +msgstr "" #: templates/js/translated/barcode.js:707 msgid "Barcode does not match valid stock item" -msgstr "Barcode entspricht keinem Lagerartikel" +msgstr "" #: templates/js/translated/barcode.js:726 msgid "Scan Stock Container Into Location" -msgstr "Diesen Lagerort per Scan an einen anderen Lagerort verschieben" +msgstr "" #: templates/js/translated/barcode.js:728 msgid "Scan stock container barcode to check in to this location" -msgstr "Barcode des Lagerorts scannen um ihn an diesen Ort einzuchecken" +msgstr "" #: templates/js/translated/barcode.js:762 msgid "Barcode does not match valid stock location" -msgstr "Barcode entspricht keinem Lagerort" +msgstr "" #: templates/js/translated/barcode.js:806 msgid "Check Into Location" -msgstr "In Lagerorten buchen" +msgstr "" #: templates/js/translated/barcode.js:875 #: templates/js/translated/barcode.js:884 msgid "Barcode does not match a valid location" -msgstr "Barcode entspricht keinem Lagerort" +msgstr "" #: templates/js/translated/bom.js:78 msgid "Create BOM Item" -msgstr "Stücklisten-Position anlegen" +msgstr "" #: templates/js/translated/bom.js:132 msgid "Display row data" -msgstr "Zeilendaten anzeigen" +msgstr "" #: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "Zeilendaten" +msgstr "" #: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 #: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 @@ -10512,103 +10782,103 @@ msgstr "Schliessen" #: templates/js/translated/bom.js:306 msgid "Download BOM Template" -msgstr "Vorlage einer Stückliste herunterladen" +msgstr "" #: templates/js/translated/bom.js:351 msgid "Multi Level BOM" -msgstr "Multilevel Stückliste" +msgstr "" #: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" -msgstr "Stücklisten-Daten für Untergruppen einbeziehen" +msgstr "" #: templates/js/translated/bom.js:357 msgid "Levels" -msgstr "Ebenen" +msgstr "" #: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "Maximale Anzahl an Ebenen für Stückliste-Export auswählen (0 = alle Ebenen)" +msgstr "" #: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" -msgstr "Alternative Teile einbeziehen" +msgstr "" #: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" -msgstr "Alternative Teile in exportierte Stückliste einbeziehen" +msgstr "" #: templates/js/translated/bom.js:371 msgid "Include Parameter Data" -msgstr "Parameter-Daten einschließen" +msgstr "" #: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" -msgstr "Teile-Parameter in Stücklisten-Export einschließen" +msgstr "" #: templates/js/translated/bom.js:377 msgid "Include Stock Data" -msgstr "Bestand einschließen" +msgstr "" #: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" -msgstr "Teil-Bestand in Stückliste-Export einschließen" +msgstr "" #: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" -msgstr "Herstellerdaten einschließen" +msgstr "" #: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" -msgstr "Teil-Herstellerdaten in Stückliste-Export einschließen" +msgstr "" #: templates/js/translated/bom.js:389 msgid "Include Supplier Data" -msgstr "Zulieferer einschließen" +msgstr "" #: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" -msgstr "Zulieferer-Daten in Stückliste-Export einschließen" +msgstr "" #: templates/js/translated/bom.js:395 msgid "Include Pricing Data" -msgstr "Preisdaten einschließen" +msgstr "" #: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" -msgstr "Preisinformationen in Stücklisten-Export einschließen" +msgstr "" #: templates/js/translated/bom.js:591 msgid "Remove substitute part" -msgstr "Ersatzteil entfernen" +msgstr "" #: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" -msgstr "Wählen Sie ein neues Ersatzteil aus und fügen Sie sie mit den folgenden Eingaben hinzu" +msgstr "" #: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" -msgstr "Sind Sie sicher, dass Sie dieses Ersatzteil entfernen möchten?" +msgstr "" #: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" -msgstr "Ersatzteil entfernen" +msgstr "" #: templates/js/translated/bom.js:701 msgid "Add Substitute" -msgstr "Ersatzteil hinzufügen" +msgstr "" #: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" -msgstr "Stücklisten Ersatzteile bearbeiten" +msgstr "" #: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" -msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht" +msgstr "" #: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" -msgstr "Ausgewählte Stücklistenpositionen löschen?" +msgstr "" #: templates/js/translated/bom.js:826 msgid "Delete items" @@ -10616,561 +10886,561 @@ msgstr "" #: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" -msgstr "Stückliste für Bauteile laden" +msgstr "" #: templates/js/translated/bom.js:946 msgid "Substitutes Available" -msgstr "Ersatzteile verfügbar" +msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" -msgstr "Varianten erlaubt" +msgstr "" #: templates/js/translated/bom.js:1014 msgid "Substitutes" -msgstr "Ersatzteile" +msgstr "" #: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" -msgstr "Stücklisten-Bepreisung ist vollständig" +msgstr "" #: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" -msgstr "Stücklisten-Bepreisung ist unvollständig" +msgstr "" #: templates/js/translated/bom.js:1151 msgid "No pricing available" -msgstr "Keine Preisinformation verfügbar" +msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" -msgstr "Kein Lagerbestand verfügbar" +msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" -msgstr "Beinhaltet Variante und Ersatzbestand" +msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" -msgstr "Beinhaltet Variantenbestand" +msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" -msgstr "Enthält Ersatzbestand" +msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" -msgstr "Verbrauchsartikel" +msgstr "" #: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" -msgstr "Stücklisten-Position kontrollieren" +msgstr "" #: templates/js/translated/bom.js:1281 msgid "This line has been validated" -msgstr "Diese Position wurde kontrolliert" +msgstr "" #: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" -msgstr "Ersatzteile bearbeiten" +msgstr "" #: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" -msgstr "Stücklisten-Position bearbeiten" +msgstr "" #: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" -msgstr "Stücklisten-Position löschen" +msgstr "" #: templates/js/translated/bom.js:1307 msgid "View BOM" -msgstr "Stückliste anzeigen" +msgstr "" #: templates/js/translated/bom.js:1391 msgid "No BOM items found" -msgstr "Keine Stücklisten-Position(en) gefunden" +msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" -msgstr "benötigtes Teil" +msgstr "" #: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" -msgstr "Geerbt von übergeordneter Stückliste" +msgstr "" #: templates/js/translated/build.js:142 msgid "Edit Build Order" -msgstr "Bauauftrag bearbeiten" +msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" -msgstr "Bauauftrag erstellen" +msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" -msgstr "Bauauftrag abbrechen" +msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" -msgstr "Sind Sie sicher, dass sie diesen Bauauftrag abbrechen möchten?" +msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" -msgstr "Lagerbestand wurde zu diesem Bauauftrag hinzugefügt" +msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" -msgstr "Für diesen Bau-Auftrag sind noch unvollständige Endprodukte vorhanden" +msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" -msgstr "Bauauftrag ist bereit abgeschlossen zu werden" - -#: templates/js/translated/build.js:299 -msgid "This build order cannot be completed as there are incomplete outputs" -msgstr "Dieser Bauauftrag kann nicht abgeschlossen werden, da es unfertige Endprodukte gibt" +msgstr "" #: templates/js/translated/build.js:304 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "" + +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" -msgstr "Bauauftrag ist unvollständig" +msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" -msgstr "Bauauftrag fertigstellen" +msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" -msgstr "Nächste verfügbare Seriennummer" +msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "Letzte Seriennummer" +msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" -msgstr "Die Stückliste enthält verfolgbare Teile" +msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" -msgstr "Endprodukte müssen individuell angelegt werden" +msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" -msgstr "Nachverfolgbare Teile können Seriennummern haben" +msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "Seriennummeren für mehrere einzelne Endprodukte angeben" +msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" -msgstr "Endprodukt anlegen" +msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" -msgstr "Lagerartikel zu diesem Endprodukt zuweisen" +msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" -msgstr "Endprodukt fertigstellen" +msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" -msgstr "Endprodukt entfernen" +msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" -msgstr "Endprodukte auswählen" +msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" -msgstr "Mindestens ein Endprodukt muss ausgewählt werden" +msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" -msgstr "Endprodukt" +msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" -msgstr "Endprodukte fertigstellen" +msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" -msgstr "Endprodukte entfernen" +msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" -msgstr "Keine Allokationen für Bauauftrag gefunden" +msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" -msgstr "Standort nicht angegeben" +msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" -msgstr "Endprodukte fertigstellen" +msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" -msgstr "Endprodukte löschen" - -#: templates/js/translated/build.js:1110 -msgid "build output" -msgstr "" - -#: templates/js/translated/build.js:1111 -msgid "build outputs" msgstr "" #: templates/js/translated/build.js:1115 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1116 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" -msgstr "Keine aktiven Endprodukte gefunden" +msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" -msgstr "Zugewiesene Positionen" +msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "Teile auswählen" +msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" -msgstr "Sie müssen mindestens ein Teil auswählen" +msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" -msgstr "Anzahl für Bestandszuordnung eingeben" +msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" -msgstr "Alle Teile zugeordnet" +msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" -msgstr "Alle ausgewählten Teile wurden vollständig zugeordnet" +msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 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)" +msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" -msgstr "Lagerartikel für Bauauftrag zuweisen" +msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" -msgstr "Keine passenden Lagerstandorte" +msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" -msgstr "Keine passenden Lagerbestände" +msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" -msgstr "Automatische Lagerzuordnung" +msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "Lagerartikel werden automatisch diesem Bauauftrag zugewiesen, entsprechend den angegebenen Richtlinien" +msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" -msgstr "Wenn ein Lagerort angegeben ist, wird der Lagerbestand nur von diesem Ort zugewiesen" +msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" -msgstr "Wenn der Lagerbestand als austauschbar gilt, wird er vom ersten Standort zugewiesen, an dem er gefunden wird" +msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" -msgstr "Wenn ein Ersatzbestand erlaubt ist, wird es dort verwendet, wo kein Vorrat des Primärteils gefunden werden kann" +msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" -msgstr "Lagerartikel zuordnen" +msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" -msgstr "Keine Bauaufträge passen zur Anfrage" +msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" -msgstr "Auswählen" +msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" -msgstr "Bauauftrag ist überfällig" +msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" -msgstr "Fortschritt" +msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" -msgstr "Keine Benutzerinformation" +msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" -msgstr "Bestands-Zuordnung bearbeiten" +msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" -msgstr "Bestands-Zuordnung löschen" +msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" -msgstr "Zuordnung bearbeiten" +msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" -msgstr "Zuordnung entfernen" +msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" -msgstr "Bauauftragsposition" +msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" -msgstr "Bauauftragspositionen" +msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" -msgstr "Keine Bauauftragspositionen gefunden" +msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" -msgstr "Nachverfolgbares Teil" +msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" -msgstr "Ausreichender Bestand verfügbar" +msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" -msgstr "Bestand bauen" +msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" -msgstr "Bestand bestellen" +msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" -msgstr "Bestand zuweisen" +msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" #: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "Hersteller hinzufügen" +msgstr "" #: templates/js/translated/company.js:111 #: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "Herstellerteil hinzufügen" +msgstr "" #: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "Herstellerteil ändern" +msgstr "" #: templates/js/translated/company.js:201 #: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "Zulieferer hinzufügen" +msgstr "" #: templates/js/translated/company.js:243 #: templates/js/translated/purchase_order.js:352 msgid "Add Supplier Part" -msgstr "Zuliefererteil hinzufügen" +msgstr "" #: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" -msgstr "Alle ausgewählten Zulieferteile werden gelöscht" +msgstr "" #: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" -msgstr "Zuliefererteil entfernen" +msgstr "" #: templates/js/translated/company.js:465 msgid "Add new Company" -msgstr "Neue Firma hinzufügen" +msgstr "" #: templates/js/translated/company.js:536 msgid "Parts Supplied" -msgstr "Teile geliefert" +msgstr "" #: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "Hersteller-Teile" +msgstr "" #: templates/js/translated/company.js:560 msgid "No company information found" -msgstr "Keine Firmeninformation gefunden" +msgstr "" #: templates/js/translated/company.js:609 msgid "Create New Contact" -msgstr "Neuen Kontakt erstellen" +msgstr "" #: templates/js/translated/company.js:625 #: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "Kontakt bearbeiten" +msgstr "" #: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" -msgstr "Alle ausgewählten Kontakte werden gelöscht" +msgstr "" #: templates/js/translated/company.js:668 #: templates/js/translated/company.js:732 msgid "Role" -msgstr "Rolle" +msgstr "" #: templates/js/translated/company.js:676 msgid "Delete Contacts" -msgstr "Kontakte löschen" +msgstr "" #: templates/js/translated/company.js:707 msgid "No contacts found" -msgstr "Keine Kontakte gefunden" +msgstr "" #: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "Telefonnummer" +msgstr "" #: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "E-Mail-Adresse" +msgstr "" #: templates/js/translated/company.js:752 msgid "Delete Contact" -msgstr "Kontakt löschen" +msgstr "" #: templates/js/translated/company.js:849 msgid "Create New Address" -msgstr "Neue Adresse erstellen" +msgstr "" #: templates/js/translated/company.js:864 #: templates/js/translated/company.js:1025 msgid "Edit Address" -msgstr "Adresse bearbeiten" +msgstr "" #: templates/js/translated/company.js:899 msgid "All selected addresses will be deleted" -msgstr "Alle ausgewählten Adressen werden gelöscht" +msgstr "" #: templates/js/translated/company.js:913 msgid "Delete Addresses" -msgstr "Adressen löschen" +msgstr "" #: templates/js/translated/company.js:940 msgid "No addresses found" -msgstr "Keine Addressen gefunden" +msgstr "" #: templates/js/translated/company.js:979 msgid "Postal city" @@ -11178,44 +11448,44 @@ msgstr "" #: templates/js/translated/company.js:985 msgid "State/province" -msgstr "Bundesland" +msgstr "" #: templates/js/translated/company.js:997 msgid "Courier notes" -msgstr "Kurierhinweise" +msgstr "" #: templates/js/translated/company.js:1003 msgid "Internal notes" -msgstr "Interne Hinweise" +msgstr "" #: templates/js/translated/company.js:1029 msgid "Delete Address" -msgstr "Adresse löschen" +msgstr "" #: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" -msgstr "Alle ausgewählten Herstellerrteile werden gelöscht" +msgstr "" #: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" -msgstr "Herstellerteile löschen" +msgstr "" #: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" -msgstr "Alle ausgewählten Parameter werden gelöscht" +msgstr "" #: templates/js/translated/company.js:1165 msgid "Delete Parameters" -msgstr "Parameter löschen" +msgstr "" #: templates/js/translated/company.js:1181 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 msgid "Order parts" -msgstr "Teile bestellen" +msgstr "" #: templates/js/translated/company.js:1198 msgid "Delete manufacturer parts" -msgstr "Herstellerteile löschen" +msgstr "" #: templates/js/translated/company.js:1230 msgid "Manufacturer part actions" @@ -11223,47 +11493,47 @@ msgstr "" #: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" -msgstr "Keine Herstellerteile gefunden" +msgstr "" #: templates/js/translated/company.js:1269 #: templates/js/translated/company.js:1557 templates/js/translated/part.js:798 #: templates/js/translated/part.js:1210 msgid "Template part" -msgstr "Vorlagenteil" +msgstr "" #: templates/js/translated/company.js:1273 #: templates/js/translated/company.js:1561 templates/js/translated/part.js:802 #: templates/js/translated/part.js:1214 msgid "Assembled part" -msgstr "Baugruppe" +msgstr "" #: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464 msgid "No parameters found" -msgstr "Keine Parameter gefunden" +msgstr "" #: templates/js/translated/company.js:1428 templates/js/translated/part.js:1527 msgid "Edit parameter" -msgstr "Parameter bearbeiten" +msgstr "" #: templates/js/translated/company.js:1429 templates/js/translated/part.js:1528 msgid "Delete parameter" -msgstr "Parameter löschen" +msgstr "" #: templates/js/translated/company.js:1446 templates/js/translated/part.js:1433 msgid "Edit Parameter" -msgstr "Parameter bearbeiten" +msgstr "" #: templates/js/translated/company.js:1455 templates/js/translated/part.js:1549 msgid "Delete Parameter" -msgstr "Parameter löschen" +msgstr "" #: templates/js/translated/company.js:1486 msgid "Delete supplier parts" -msgstr "Zuliefererteil entfernen" +msgstr "" #: templates/js/translated/company.js:1536 msgid "No supplier parts found" -msgstr "Keine Zuliefererteile gefunden" +msgstr "" #: templates/js/translated/company.js:1654 msgid "Base Units" @@ -11271,63 +11541,63 @@ msgstr "" #: templates/js/translated/company.js:1684 msgid "Availability" -msgstr "Verfügbarkeit" +msgstr "" #: templates/js/translated/company.js:1715 msgid "Edit supplier part" -msgstr "Zuliefererteil bearbeiten" +msgstr "" #: templates/js/translated/company.js:1716 msgid "Delete supplier part" -msgstr "Zuliefererteil entfernen" +msgstr "" #: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" -msgstr "Preisstaffel löschen" +msgstr "" #: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" -msgstr "Preisstaffel bearbeiten" +msgstr "" #: templates/js/translated/company.js:1794 msgid "No price break information found" -msgstr "Keine Informationen zur Preisstaffel gefunden" +msgstr "" #: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "Zuletzt aktualisiert" +msgstr "" #: templates/js/translated/company.js:1830 msgid "Edit price break" -msgstr "Preisstaffel bearbeiten" +msgstr "" #: templates/js/translated/company.js:1831 msgid "Delete price break" -msgstr "Preisstaffel löschen" +msgstr "" #: templates/js/translated/filters.js:186 #: templates/js/translated/filters.js:672 msgid "true" -msgstr "ja" +msgstr "" #: templates/js/translated/filters.js:190 #: templates/js/translated/filters.js:673 msgid "false" -msgstr "nein" +msgstr "" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "Filter auswählen" +msgstr "" #: templates/js/translated/filters.js:437 msgid "Print Labels" -msgstr "Etiketten drucken" +msgstr "" #: templates/js/translated/filters.js:441 msgid "Print Reports" -msgstr "Berichte drucken" +msgstr "" #: templates/js/translated/filters.js:453 msgid "Download table data" @@ -11339,44 +11609,44 @@ msgstr "" #: templates/js/translated/filters.js:469 msgid "Add new filter" -msgstr "Filter hinzufügen" +msgstr "" #: templates/js/translated/filters.js:477 msgid "Clear all filters" -msgstr "Filter entfernen" +msgstr "" #: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "Filter anlegen" +msgstr "" #: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 #: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" -msgstr "Aktion verboten" +msgstr "" #: templates/js/translated/forms.js:376 msgid "Create operation not allowed" -msgstr "Erstellvorgang nicht erlaubt" +msgstr "" #: templates/js/translated/forms.js:391 msgid "Update operation not allowed" -msgstr "Updatevorgang nicht erlaubt" +msgstr "" #: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" -msgstr "Löschvorgang nicht erlaubt" +msgstr "" #: templates/js/translated/forms.js:419 msgid "View operation not allowed" -msgstr "Anzeigevorgang nicht erlaubt" +msgstr "" #: templates/js/translated/forms.js:796 msgid "Keep this form open" -msgstr "Dieses Formular offen lassen" +msgstr "" #: templates/js/translated/forms.js:899 msgid "Enter a valid number" -msgstr "Gib eine gültige Nummer ein" +msgstr "" #: templates/js/translated/forms.js:1469 templates/modals.html:19 #: templates/modals.html:43 @@ -11385,52 +11655,48 @@ msgstr "Fehler in Formular" #: templates/js/translated/forms.js:1967 msgid "No results found" -msgstr "Keine Ergebnisse gefunden" +msgstr "" #: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239 msgid "Searching" -msgstr "Suche" +msgstr "" #: templates/js/translated/forms.js:2485 msgid "Clear input" -msgstr "Eingabe leeren" +msgstr "" #: templates/js/translated/forms.js:3071 msgid "File Column" -msgstr "Dateispalte" +msgstr "" #: templates/js/translated/forms.js:3071 msgid "Field Name" -msgstr "Feldname" +msgstr "" #: templates/js/translated/forms.js:3083 msgid "Select Columns" -msgstr "Spalten auswählen" +msgstr "" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "JA" +msgstr "" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "NEIN" +msgstr "" #: templates/js/translated/helpers.js:93 msgid "True" -msgstr "Wahr" +msgstr "" #: templates/js/translated/helpers.js:94 msgid "False" -msgstr "Falsch" +msgstr "" #: templates/js/translated/index.js:104 msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11441,7 +11707,7 @@ msgstr "" #: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "Keine Labels gefunden" +msgstr "" #: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" @@ -11477,12 +11743,12 @@ msgstr "" #: templates/js/translated/label.js:187 msgid "Labels sent to printer" -msgstr "Label an den Drucker gesendet" +msgstr "" #: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 #: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "Abbrechen" +msgstr "" #: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 #: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 @@ -11492,81 +11758,81 @@ msgstr "Abschicken" #: templates/js/translated/modals.js:156 msgid "Form Title" -msgstr "Formulartitel" +msgstr "" #: templates/js/translated/modals.js:445 msgid "Waiting for server..." -msgstr "Warte auf Server..." +msgstr "" #: templates/js/translated/modals.js:596 msgid "Show Error Information" -msgstr "Fehler-Informationen anzeigen" +msgstr "" #: templates/js/translated/modals.js:682 msgid "Accept" -msgstr "Akzeptieren" +msgstr "" #: templates/js/translated/modals.js:740 msgid "Loading Data" -msgstr "Lade Daten" +msgstr "" #: templates/js/translated/modals.js:1011 msgid "Invalid response from server" -msgstr "ungültige Antwort vom Server" +msgstr "" #: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" -msgstr "Formulardaten fehlen bei Serverantwort" +msgstr "" #: templates/js/translated/modals.js:1023 msgid "Error posting form data" -msgstr "Formulardaten fehlerhaft" +msgstr "" #: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" -msgstr "JSON Antwort enthält keine Formulardaten" +msgstr "" #: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" -msgstr "Fehler 400: Ungültige Anfrage" +msgstr "" #: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" -msgstr "Fehler 400 von Server erhalten" +msgstr "" #: templates/js/translated/modals.js:1159 msgid "Error requesting form data" -msgstr "Fehler bei Formulardaten-Anfrage" +msgstr "" #: templates/js/translated/news.js:33 msgid "No news found" -msgstr "Keine Nachrichten gefunden" +msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 #: templates/js/translated/part.js:1604 msgid "ID" -msgstr "ID" +msgstr "" #: templates/js/translated/notification.js:52 msgid "Age" -msgstr "Alter" +msgstr "" #: templates/js/translated/notification.js:65 msgid "Notification" -msgstr "Benachrichtigung" +msgstr "" #: templates/js/translated/notification.js:224 msgid "Mark as unread" -msgstr "Als ungelesen markieren" +msgstr "" #: templates/js/translated/notification.js:228 msgid "Mark as read" -msgstr "Als gelesen markieren" +msgstr "" #: templates/js/translated/notification.js:254 msgid "No unread notifications" -msgstr "Keine ungelesenen Benachrichtigungen" +msgstr "" #: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" @@ -11574,68 +11840,68 @@ msgstr "Benachrichtigungen erscheinen hier" #: templates/js/translated/order.js:89 msgid "Add Extra Line Item" -msgstr "Zusatzposition hinzufügen" +msgstr "" #: templates/js/translated/order.js:126 msgid "Export Order" -msgstr "Bestellung exportieren" +msgstr "" #: templates/js/translated/order.js:241 msgid "Duplicate Line" -msgstr "Position duplizieren" +msgstr "" #: templates/js/translated/order.js:255 msgid "Edit Line" -msgstr "Zeile bearbeiten" +msgstr "" #: templates/js/translated/order.js:268 msgid "Delete Line" -msgstr "Zeile löschen" +msgstr "" #: templates/js/translated/order.js:281 #: templates/js/translated/purchase_order.js:1987 msgid "No line items found" -msgstr "Keine Positionen gefunden" +msgstr "" #: templates/js/translated/order.js:369 msgid "Duplicate line" -msgstr "Position duplizieren" +msgstr "" #: templates/js/translated/order.js:370 msgid "Edit line" -msgstr "Zeile bearbeiten" +msgstr "" #: templates/js/translated/order.js:374 msgid "Delete line" -msgstr "Zeile löschen" +msgstr "" #: templates/js/translated/part.js:90 msgid "Part Attributes" -msgstr "Teileigenschaften" +msgstr "" #: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "Erstellungsoptionen für Teile" +msgstr "" #: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "Einstellungen für Teilkopien" +msgstr "" #: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "Teil-Kategorie hinzufügen" +msgstr "" #: templates/js/translated/part.js:308 msgid "Parent part category" -msgstr "Übergeordnete Teilkategorie" +msgstr "" #: templates/js/translated/part.js:332 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" -msgstr "Icon (optional) - alle verfügbaren Icons einsehbar auf" +msgstr "" #: templates/js/translated/part.js:352 msgid "Create Part Category" -msgstr "Teil-Kategorie hinzufügen" +msgstr "" #: templates/js/translated/part.js:355 msgid "Create new category after this one" @@ -11647,229 +11913,233 @@ msgstr "" #: templates/js/translated/part.js:370 msgid "Edit Part Category" -msgstr "Teil-Kategorie bearbeiten" +msgstr "" #: templates/js/translated/part.js:383 msgid "Are you sure you want to delete this part category?" -msgstr "Möchten Sie diese Kategorie wirklich löschen?" +msgstr "" #: templates/js/translated/part.js:388 msgid "Move to parent category" -msgstr "In übergeordnete Kategorie verschieben" +msgstr "" #: templates/js/translated/part.js:397 msgid "Delete Part Category" -msgstr "Teil-Kategorie löschen" +msgstr "" #: templates/js/translated/part.js:401 msgid "Action for parts in this category" -msgstr "Aktion für Teile in dieser Kategorie" +msgstr "" #: templates/js/translated/part.js:406 msgid "Action for child categories" -msgstr "Aktion für Unterkategorien" +msgstr "" #: templates/js/translated/part.js:430 msgid "Create Part" -msgstr "Teil hinzufügen" +msgstr "" #: templates/js/translated/part.js:432 msgid "Create another part after this one" -msgstr "Ein weiteres Teil anlegen" +msgstr "" #: templates/js/translated/part.js:433 msgid "Part created successfully" -msgstr "Teil erfolgreich angelegt" +msgstr "" #: templates/js/translated/part.js:461 msgid "Edit Part" -msgstr "Teil bearbeiten" +msgstr "" #: templates/js/translated/part.js:463 msgid "Part edited" -msgstr "Teil bearbeitet" +msgstr "" #: templates/js/translated/part.js:474 msgid "Create Part Variant" -msgstr "Teil-Variante anlegen" +msgstr "" #: templates/js/translated/part.js:531 msgid "Active Part" -msgstr "Aktives Teil" +msgstr "" #: templates/js/translated/part.js:532 msgid "Part cannot be deleted as it is currently active" -msgstr "Teil kann nicht gelöscht werden, da es derzeit aktiv ist" +msgstr "" #: templates/js/translated/part.js:546 msgid "Deleting this part cannot be reversed" -msgstr "Das Löschen dieses Teils kann nicht rückgängig gemacht werden" +msgstr "" #: templates/js/translated/part.js:548 msgid "Any stock items for this part will be deleted" -msgstr "Alle Lagerartikel für dieses Teil werden gelöscht" +msgstr "" #: templates/js/translated/part.js:549 msgid "This part will be removed from any Bills of Material" -msgstr "Dieses Teil wird von allen Stücklisten entfernt" +msgstr "" #: templates/js/translated/part.js:550 msgid "All manufacturer and supplier information for this part will be deleted" -msgstr "Alle Hersteller- und Zuliefererinformationen für dieses Teil werden gelöscht" +msgstr "" #: templates/js/translated/part.js:557 msgid "Delete Part" -msgstr "Teil löschen" +msgstr "" #: templates/js/translated/part.js:593 msgid "You are subscribed to notifications for this item" -msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert" +msgstr "" #: templates/js/translated/part.js:595 msgid "You have subscribed to notifications for this item" -msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert" +msgstr "" #: templates/js/translated/part.js:600 msgid "Subscribe to notifications for this item" -msgstr "Benachrichtigungen für dieses Teil abonnieren" +msgstr "" #: templates/js/translated/part.js:602 msgid "You have unsubscribed to notifications for this item" -msgstr "Sie haben Benachrichtigungen für dieses Teil abgemeldet" +msgstr "" #: templates/js/translated/part.js:619 msgid "Validating the BOM will mark each line item as valid" -msgstr "Die Stückliste zu validieren markiert jede Zeile als gültig" +msgstr "" #: templates/js/translated/part.js:629 msgid "Validate Bill of Materials" -msgstr "Stückliste prüfen" +msgstr "" #: templates/js/translated/part.js:632 msgid "Validated Bill of Materials" -msgstr "überprüfte Stückliste" +msgstr "" #: templates/js/translated/part.js:657 msgid "Copy Bill of Materials" -msgstr "Stückliste kopieren" +msgstr "" #: templates/js/translated/part.js:685 #: templates/js/translated/table_filters.js:743 msgid "Low stock" -msgstr "Bestand niedrig" +msgstr "" #: templates/js/translated/part.js:688 msgid "No stock available" -msgstr "Kein Lagerbestand verfügbar" +msgstr "" #: templates/js/translated/part.js:748 msgid "Demand" -msgstr "Bedarf" +msgstr "" #: templates/js/translated/part.js:771 msgid "Unit" -msgstr "Einheit" +msgstr "" #: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 msgid "Virtual part" -msgstr "virtuelles Teil" +msgstr "" #: templates/js/translated/part.js:806 msgid "Subscribed part" -msgstr "Abonnierter Teil" +msgstr "" #: templates/js/translated/part.js:810 msgid "Salable part" -msgstr "Verkäufliches Teil" +msgstr "" #: templates/js/translated/part.js:889 msgid "Schedule generation of a new stocktake report." -msgstr "Die Erstellung eines neuen Inventurberichtes planen." +msgstr "" #: templates/js/translated/part.js:889 msgid "Once complete, the stocktake report will be available for download." -msgstr "Nach Fertigstellung steht der Inventurbericht zum Download zur Verfügung." +msgstr "" #: templates/js/translated/part.js:897 msgid "Generate Stocktake Report" -msgstr "Inventurbericht generieren" +msgstr "" #: templates/js/translated/part.js:901 msgid "Stocktake report scheduled" -msgstr "Inventurbericht geplant" +msgstr "" #: templates/js/translated/part.js:1050 msgid "No stocktake information available" -msgstr "Keine Inventurinformationen verfügbar" +msgstr "" #: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 msgid "Edit Stocktake Entry" -msgstr "Inventureintrag bearbeiten" +msgstr "" #: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 msgid "Delete Stocktake Entry" -msgstr "Inventureintrag löschen" +msgstr "" #: templates/js/translated/part.js:1281 msgid "No variants found" -msgstr "Keine Varianten gefunden" +msgstr "" #: templates/js/translated/part.js:1599 msgid "No part parameter templates found" -msgstr "Keine Teilparametervorlagen gefunden" +msgstr "" #: templates/js/translated/part.js:1662 msgid "Edit Part Parameter Template" -msgstr "Teilparametervorlage bearbeiten" +msgstr "" #: templates/js/translated/part.js:1674 msgid "Any parameters which reference this template will also be deleted" -msgstr "Alle Parameter, die diese Vorlage referenzieren, werden ebenfalls gelöscht" +msgstr "" #: templates/js/translated/part.js:1682 msgid "Delete Part Parameter Template" -msgstr "Teilparametervorlage löschen" +msgstr "" #: templates/js/translated/part.js:1716 #: templates/js/translated/purchase_order.js:1651 msgid "No purchase orders found" -msgstr "Keine Bestellungen gefunden" +msgstr "" #: templates/js/translated/part.js:1860 #: templates/js/translated/purchase_order.js:2150 #: templates/js/translated/return_order.js:756 #: templates/js/translated/sales_order.js:1875 msgid "This line item is overdue" -msgstr "Diese Position ist überfällig" +msgstr "" #: templates/js/translated/part.js:1906 #: templates/js/translated/purchase_order.js:2217 msgid "Receive line item" -msgstr "Position empfangen" +msgstr "" #: templates/js/translated/part.js:1969 msgid "Delete part relationship" -msgstr "Teile-Beziehung löschen" +msgstr "" #: templates/js/translated/part.js:1991 msgid "Delete Part Relationship" -msgstr "Teile-Beziehung löschen" +msgstr "" #: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 msgid "No parts found" -msgstr "Keine Teile gefunden" +msgstr "" #: templates/js/translated/part.js:2200 msgid "Set the part category for the selected parts" -msgstr "Legen Sie die Teilkategorie für die ausgewählten Teile fest" +msgstr "" #: templates/js/translated/part.js:2205 msgid "Set Part Category" -msgstr "Teil-Kategorie auswählen" +msgstr "" #: templates/js/translated/part.js:2235 msgid "Set category" -msgstr "Teil-Kategorie auswählen" +msgstr "" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" #: templates/js/translated/part.js:2288 msgid "parts" @@ -11877,16 +12147,16 @@ msgstr "" #: templates/js/translated/part.js:2384 msgid "No category" -msgstr "Keine Kategorie" +msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2640 msgid "Display as list" -msgstr "Listenansicht" +msgstr "" #: templates/js/translated/part.js:2547 msgid "Display as grid" -msgstr "Rasteransicht" +msgstr "" #: templates/js/translated/part.js:2645 msgid "No subcategories found" @@ -11894,72 +12164,72 @@ msgstr "" #: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "Baumansicht" +msgstr "" #: templates/js/translated/part.js:2761 msgid "Load Subcategories" -msgstr "Unterkategorien laden" +msgstr "" #: templates/js/translated/part.js:2777 msgid "Subscribed category" -msgstr "Abonnierte Kategorie" +msgstr "" #: templates/js/translated/part.js:2854 msgid "No test templates matching query" -msgstr "Keine zur Anfrage passenden Testvorlagen" +msgstr "" #: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436 msgid "Edit test result" -msgstr "Testergebnis bearbeiten" +msgstr "" #: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437 #: templates/js/translated/stock.js:1699 msgid "Delete test result" -msgstr "Testergebnis löschen" +msgstr "" #: templates/js/translated/part.js:2910 msgid "This test is defined for a parent part" -msgstr "Dieses Testergebnis ist für ein Hauptteil" +msgstr "" #: templates/js/translated/part.js:2926 msgid "Edit Test Result Template" -msgstr "Testergebnis-Vorlage bearbeiten" +msgstr "" #: templates/js/translated/part.js:2940 msgid "Delete Test Result Template" -msgstr "Testergebnis-Vorlage löschen" +msgstr "" #: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020 msgid "No date specified" -msgstr "Kein Datum angegeben" +msgstr "" #: templates/js/translated/part.js:3022 msgid "Specified date is in the past" -msgstr "Das angegebene Datum liegt in der Vergangenheit" +msgstr "" #: templates/js/translated/part.js:3028 msgid "Speculative" -msgstr "Spekulativ" +msgstr "" #: templates/js/translated/part.js:3078 msgid "No scheduling information available for this part" -msgstr "Keine Zeitplanung für dieses Teil vorhanden" +msgstr "" #: templates/js/translated/part.js:3084 msgid "Error fetching scheduling information for this part" -msgstr "Fehler beim Abrufen der Zeitplanungsinformationen für dieses Teil" +msgstr "" #: templates/js/translated/part.js:3180 msgid "Scheduled Stock Quantities" -msgstr "Geplante Lagermengen" +msgstr "" #: templates/js/translated/part.js:3196 msgid "Maximum Quantity" -msgstr "Maximale Anzahl" +msgstr "" #: templates/js/translated/part.js:3241 msgid "Minimum Stock Level" -msgstr "Minimaler Lagerbestand" +msgstr "" #: templates/js/translated/plugin.js:46 msgid "No plugins found" @@ -11987,7 +12257,7 @@ msgstr "" #: templates/js/translated/plugin.js:158 msgid "The Plugin was installed" -msgstr "Das Plugin wurde installiert" +msgstr "" #: templates/js/translated/plugin.js:177 msgid "Are you sure you want to enable this plugin?" @@ -11999,118 +12269,118 @@ msgstr "" #: templates/js/translated/plugin.js:189 msgid "Enable" -msgstr "Aktivieren" +msgstr "" #: templates/js/translated/plugin.js:189 msgid "Disable" -msgstr "Deaktivieren" +msgstr "" #: templates/js/translated/plugin.js:203 msgid "Plugin updated" -msgstr "Plugin aktualisiert" +msgstr "" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" -msgstr "Fehler beim Abrufen der Währungsdaten" +msgstr "" #: templates/js/translated/pricing.js:321 msgid "No BOM data available" -msgstr "Keine Stücklisten-Daten verfügbar" +msgstr "" #: templates/js/translated/pricing.js:463 msgid "No supplier pricing data available" -msgstr "Keine Zulieferer-Preise verfügbar" +msgstr "" #: templates/js/translated/pricing.js:572 msgid "No price break data available" -msgstr "Keine Staffelpreisdaten verfügbar" +msgstr "" #: templates/js/translated/pricing.js:755 msgid "No purchase history data available" -msgstr "Keine Einkaufshistorie verfügbar" +msgstr "" #: templates/js/translated/pricing.js:791 msgid "Purchase Price History" -msgstr "Kaufpreisverlauf" +msgstr "" #: templates/js/translated/pricing.js:894 msgid "No sales history data available" -msgstr "Keine Verkaufshistorie verfügbar" +msgstr "" #: templates/js/translated/pricing.js:916 msgid "Sale Price History" -msgstr "Verkaufspreisverlauf" +msgstr "" #: templates/js/translated/pricing.js:1005 msgid "No variant data available" -msgstr "Keine Variantendaten verfügbar" +msgstr "" #: templates/js/translated/pricing.js:1045 msgid "Variant Part" -msgstr "Variantenteil" +msgstr "" #: templates/js/translated/purchase_order.js:169 msgid "Select purchase order to duplicate" -msgstr "Bestellung zum Duplizieren auswählen" +msgstr "" #: templates/js/translated/purchase_order.js:176 msgid "Duplicate Line Items" -msgstr "Positionen duplizieren" +msgstr "" #: templates/js/translated/purchase_order.js:177 msgid "Duplicate all line items from the selected order" -msgstr "Alle Positionen der ausgewählten Bestellung duplizieren" +msgstr "" #: templates/js/translated/purchase_order.js:184 msgid "Duplicate Extra Lines" -msgstr "Zusätzliche Zeilen duplizieren" +msgstr "" #: templates/js/translated/purchase_order.js:185 msgid "Duplicate extra line items from the selected order" -msgstr "Zusätzliche Positionen der ausgewählten Bestellung duplizieren" +msgstr "" #: templates/js/translated/purchase_order.js:206 msgid "Edit Purchase Order" -msgstr "Bestellung bearbeiten" +msgstr "" #: templates/js/translated/purchase_order.js:223 msgid "Duplication Options" -msgstr "Duplizierungsoptionen" +msgstr "" #: templates/js/translated/purchase_order.js:450 msgid "Complete Purchase Order" -msgstr "Bestellung vervollständigen" +msgstr "" #: templates/js/translated/purchase_order.js:467 #: templates/js/translated/return_order.js:210 #: templates/js/translated/sales_order.js:500 msgid "Mark this order as complete?" -msgstr "Diese Bestellung als vollständig markieren?" +msgstr "" #: templates/js/translated/purchase_order.js:473 msgid "All line items have been received" -msgstr "Alle Einträge wurden erhalten" +msgstr "" #: templates/js/translated/purchase_order.js:478 msgid "This order has line items which have not been marked as received." -msgstr "Diese Bestellung enthält Positionen, die nicht als empfangen markiert wurden." +msgstr "" #: templates/js/translated/purchase_order.js:479 #: templates/js/translated/sales_order.js:514 msgid "Completing this order means that the order and line items will no longer be editable." -msgstr "Fertigstellen dieser Bestellung bedeutet, dass sie und ihre Positionen nicht länger bearbeitbar sind." +msgstr "" #: templates/js/translated/purchase_order.js:502 msgid "Cancel Purchase Order" -msgstr "Bestellung abbrechen" +msgstr "" #: templates/js/translated/purchase_order.js:507 msgid "Are you sure you wish to cancel this purchase order?" -msgstr "Sind Sie sicher, dass Sie diese Bestellung abbrechen möchten?" +msgstr "" #: templates/js/translated/purchase_order.js:513 msgid "This purchase order can not be cancelled" -msgstr "Diese Bestellung kann nicht storniert werden" +msgstr "" #: templates/js/translated/purchase_order.js:534 #: templates/js/translated/return_order.js:164 @@ -12119,64 +12389,64 @@ msgstr "" #: templates/js/translated/purchase_order.js:539 msgid "Issue Purchase Order" -msgstr "Bestellung aufgeben" +msgstr "" #: templates/js/translated/purchase_order.js:631 msgid "At least one purchaseable part must be selected" -msgstr "Mindestens ein kaufbares Teil muss ausgewählt werden" +msgstr "" #: templates/js/translated/purchase_order.js:656 msgid "Quantity to order" -msgstr "Zu bestellende Menge" +msgstr "" #: templates/js/translated/purchase_order.js:665 msgid "New supplier part" -msgstr "Neues Zuliefererteil" +msgstr "" #: templates/js/translated/purchase_order.js:683 msgid "New purchase order" -msgstr "Neue Bestellung" +msgstr "" #: templates/js/translated/purchase_order.js:715 msgid "Add to purchase order" -msgstr "Zur Bestellung hinzufügen" +msgstr "" #: templates/js/translated/purchase_order.js:863 msgid "No matching supplier parts" -msgstr "Keine passenden Lieferantenteile" +msgstr "" #: templates/js/translated/purchase_order.js:882 msgid "No matching purchase orders" -msgstr "Keine passenden Bestellungen" +msgstr "" #: templates/js/translated/purchase_order.js:1069 msgid "Select Line Items" -msgstr "Positionen auswählen" +msgstr "" #: templates/js/translated/purchase_order.js:1070 #: templates/js/translated/return_order.js:492 msgid "At least one line item must be selected" -msgstr "Mindestens eine Position muss ausgewählt werden" +msgstr "" #: templates/js/translated/purchase_order.js:1100 msgid "Received Quantity" -msgstr "Gelieferte Menge" +msgstr "" #: templates/js/translated/purchase_order.js:1111 msgid "Quantity to receive" -msgstr "Zu erhaltende Menge" +msgstr "" #: templates/js/translated/purchase_order.js:1187 msgid "Stock Status" -msgstr "Status" +msgstr "" #: templates/js/translated/purchase_order.js:1201 msgid "Add barcode" -msgstr "Barcode hinzufügen" +msgstr "" #: templates/js/translated/purchase_order.js:1202 msgid "Remove barcode" -msgstr "Barcode entfernen" +msgstr "" #: templates/js/translated/purchase_order.js:1205 msgid "Specify location" @@ -12184,11 +12454,11 @@ msgstr "" #: templates/js/translated/purchase_order.js:1213 msgid "Add batch code" -msgstr "Losnummer hinzufügen" +msgstr "" #: templates/js/translated/purchase_order.js:1224 msgid "Add serial numbers" -msgstr "Seriennummern hinzufügen" +msgstr "" #: templates/js/translated/purchase_order.js:1276 msgid "Serials" @@ -12196,20 +12466,20 @@ msgstr "" #: templates/js/translated/purchase_order.js:1301 msgid "Order Code" -msgstr "Bestellnummer" +msgstr "" #: templates/js/translated/purchase_order.js:1303 msgid "Quantity to Receive" -msgstr "Zu erhaltende Menge" +msgstr "" #: templates/js/translated/purchase_order.js:1329 #: templates/js/translated/return_order.js:561 msgid "Confirm receipt of items" -msgstr "Empfang der Teile bestätigen" +msgstr "" #: templates/js/translated/purchase_order.js:1330 msgid "Receive Purchase Order Items" -msgstr "Bestellpositionen erhalten" +msgstr "" #: templates/js/translated/purchase_order.js:1398 msgid "Scan Item Barcode" @@ -12228,73 +12498,73 @@ msgstr "" #: templates/js/translated/sales_order.js:774 #: templates/js/translated/sales_order.js:998 msgid "Order is overdue" -msgstr "Bestellung überfällig" +msgstr "" #: templates/js/translated/purchase_order.js:1744 #: templates/js/translated/return_order.js:354 #: templates/js/translated/sales_order.js:851 #: templates/js/translated/sales_order.js:1011 msgid "Items" -msgstr "Positionen" +msgstr "" #: templates/js/translated/purchase_order.js:1840 msgid "All selected Line items will be deleted" -msgstr "Alle ausgewählten Positionen werden gelöscht" +msgstr "" #: templates/js/translated/purchase_order.js:1858 msgid "Delete selected Line items?" -msgstr "Ausgewählte Positionen löschen?" +msgstr "" #: templates/js/translated/purchase_order.js:1913 #: templates/js/translated/sales_order.js:2070 msgid "Duplicate Line Item" -msgstr "Position duplizieren" +msgstr "" #: templates/js/translated/purchase_order.js:1928 #: templates/js/translated/return_order.js:476 #: templates/js/translated/return_order.js:669 #: templates/js/translated/sales_order.js:2083 msgid "Edit Line Item" -msgstr "Position bearbeiten" +msgstr "" #: templates/js/translated/purchase_order.js:1939 #: templates/js/translated/return_order.js:682 #: templates/js/translated/sales_order.js:2094 msgid "Delete Line Item" -msgstr "Position löschen" +msgstr "" #: templates/js/translated/purchase_order.js:2221 #: templates/js/translated/sales_order.js:2024 msgid "Duplicate line item" -msgstr "Position duplizieren" +msgstr "" #: templates/js/translated/purchase_order.js:2222 #: templates/js/translated/return_order.js:801 #: templates/js/translated/sales_order.js:2025 msgid "Edit line item" -msgstr "Position bearbeiten" +msgstr "" #: templates/js/translated/purchase_order.js:2223 #: templates/js/translated/return_order.js:805 #: templates/js/translated/sales_order.js:2031 msgid "Delete line item" -msgstr "Position löschen" +msgstr "" #: templates/js/translated/report.js:63 msgid "items selected" -msgstr "Lagerartikel ausgewählt" +msgstr "" #: templates/js/translated/report.js:71 msgid "Select Report Template" -msgstr "Bericht-Vorlage auswählen" +msgstr "" #: templates/js/translated/report.js:86 msgid "Select Test Report Template" -msgstr "Test-Bericht-Vorlage auswählen" +msgstr "" #: templates/js/translated/report.js:140 msgid "No Reports Found" -msgstr "Keine Berichte gefunden" +msgstr "" #: templates/js/translated/report.js:141 msgid "No report templates found which match the selected items" @@ -12303,7 +12573,7 @@ msgstr "" #: templates/js/translated/return_order.js:60 #: templates/js/translated/sales_order.js:86 msgid "Add Customer" -msgstr "Kunden hinzufügen" +msgstr "" #: templates/js/translated/return_order.js:134 msgid "Create Return Order" @@ -12336,16 +12606,16 @@ msgstr "" #: templates/js/translated/return_order.js:300 #: templates/js/translated/sales_order.js:788 msgid "Invalid Customer" -msgstr "Ungültiger Kunde" +msgstr "" #: templates/js/translated/return_order.js:562 msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" -msgstr "Keine passenden Positionen gefunden" +msgstr "" #: templates/js/translated/return_order.js:798 msgid "Mark item as received" @@ -12353,47 +12623,47 @@ msgstr "" #: templates/js/translated/sales_order.js:161 msgid "Create Sales Order" -msgstr "Auftrag anlegen" +msgstr "" #: templates/js/translated/sales_order.js:176 msgid "Edit Sales Order" -msgstr "Auftrag bearbeiten" +msgstr "" #: templates/js/translated/sales_order.js:291 msgid "No stock items have been allocated to this shipment" -msgstr "Dieser Sendung wurden keine Artikel zugewiesen" +msgstr "" #: templates/js/translated/sales_order.js:296 msgid "The following stock items will be shipped" -msgstr "Die folgenden Artikel werden verschickt" +msgstr "" #: templates/js/translated/sales_order.js:336 msgid "Complete Shipment" -msgstr "Sendung fertigstellen" +msgstr "" #: templates/js/translated/sales_order.js:360 msgid "Confirm Shipment" -msgstr "Sendung bestätigen" +msgstr "" #: templates/js/translated/sales_order.js:416 msgid "No pending shipments found" -msgstr "Keine ausstehenden Sendungen gefunden" +msgstr "" #: templates/js/translated/sales_order.js:420 msgid "No stock items have been allocated to pending shipments" -msgstr "Keine Lagerartikel für offene Sendungen zugewiesen" +msgstr "" #: templates/js/translated/sales_order.js:430 msgid "Complete Shipments" -msgstr "Abgeschlossene Sendungen" +msgstr "" #: templates/js/translated/sales_order.js:452 msgid "Skip" -msgstr "Überspringen" +msgstr "" #: templates/js/translated/sales_order.js:513 msgid "This order has line items which have not been completed." -msgstr "Dieser Auftrag enthält Positionen, die noch nicht abgeschlossen sind." +msgstr "" #: templates/js/translated/sales_order.js:535 msgid "Issue this Sales Order?" @@ -12405,132 +12675,132 @@ msgstr "" #: templates/js/translated/sales_order.js:559 msgid "Cancel Sales Order" -msgstr "Auftrag stornieren" +msgstr "" #: templates/js/translated/sales_order.js:564 msgid "Cancelling this order means that the order will no longer be editable." -msgstr "Abbruch dieser Bestellung bedeutet, dass sie nicht länger bearbeitbar ist." +msgstr "" #: templates/js/translated/sales_order.js:618 msgid "Create New Shipment" -msgstr "Sendung anlegen" +msgstr "" #: templates/js/translated/sales_order.js:728 msgid "No sales orders found" -msgstr "Keine Aufträge gefunden" +msgstr "" #: templates/js/translated/sales_order.js:908 msgid "Edit shipment" -msgstr "Sendung bearbeiten" +msgstr "" #: templates/js/translated/sales_order.js:911 msgid "Complete shipment" -msgstr "Sendung fertigstellen" +msgstr "" #: templates/js/translated/sales_order.js:916 msgid "Delete shipment" -msgstr "Sendung löschen" +msgstr "" #: templates/js/translated/sales_order.js:933 msgid "Edit Shipment" -msgstr "Sendung bearbeiten" +msgstr "" #: templates/js/translated/sales_order.js:948 msgid "Delete Shipment" -msgstr "Sendung löschen" +msgstr "" #: templates/js/translated/sales_order.js:981 msgid "No matching shipments found" -msgstr "Keine passenden Sendungen gefunden" +msgstr "" #: templates/js/translated/sales_order.js:1006 msgid "Shipment Reference" -msgstr "Sendungsreferenz" +msgstr "" #: templates/js/translated/sales_order.js:1030 #: templates/js/translated/sales_order.js:1529 msgid "Not shipped" -msgstr "Nicht versandt" +msgstr "" #: templates/js/translated/sales_order.js:1048 msgid "Tracking" -msgstr "Nachverfolgen" +msgstr "" #: templates/js/translated/sales_order.js:1052 msgid "Invoice" -msgstr "Rechnung" +msgstr "" #: templates/js/translated/sales_order.js:1219 msgid "Add Shipment" -msgstr "Sendung hinzufügen" +msgstr "" #: templates/js/translated/sales_order.js:1270 msgid "Confirm stock allocation" -msgstr "Bestandszuordnung bestätigen" +msgstr "" #: templates/js/translated/sales_order.js:1271 msgid "Allocate Stock Items to Sales Order" -msgstr "Artikel zu Kundenauftrag zuweisen" +msgstr "" #: templates/js/translated/sales_order.js:1477 msgid "No sales order allocations found" -msgstr "Keine Allokationen für Verkaufsaufträge gefunden" +msgstr "" #: templates/js/translated/sales_order.js:1569 msgid "Edit Stock Allocation" -msgstr "Bestandszuordnung bearbeiten" +msgstr "" #: templates/js/translated/sales_order.js:1583 msgid "Confirm Delete Operation" -msgstr "Löschvorgang bestätigen" +msgstr "" #: templates/js/translated/sales_order.js:1584 msgid "Delete Stock Allocation" -msgstr "Bestands-Zuordnung löschen" +msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 #: templates/js/translated/stock.js:1744 msgid "Shipped to customer" -msgstr "an Kunde versand" +msgstr "" #: templates/js/translated/sales_order.js:1631 #: templates/js/translated/sales_order.js:1719 msgid "Stock location not specified" -msgstr "Lagerstandort nicht angegeben" +msgstr "" #: templates/js/translated/sales_order.js:2008 msgid "Allocate serial numbers" -msgstr "Seriennummern zuweisen" +msgstr "" #: templates/js/translated/sales_order.js:2012 msgid "Purchase stock" -msgstr "Bestand kaufen" +msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" -msgstr "Preis berechnen" +msgstr "" #: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been shipped" -msgstr "Kann nicht gelöscht werden, da Artikel versandt wurden" +msgstr "" #: templates/js/translated/sales_order.js:2038 msgid "Cannot be deleted as items have been allocated" -msgstr "Kann nicht gelöscht werden, da Artikel zugewiesen sind" +msgstr "" #: templates/js/translated/sales_order.js:2109 msgid "Allocate Serial Numbers" -msgstr "Seriennummern zuweisen" +msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" -msgstr "Stückpreis aktualisieren" +msgstr "" #: templates/js/translated/search.js:270 msgid "No results" -msgstr "Keine Ergebnisse" +msgstr "" #: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" @@ -12546,19 +12816,19 @@ msgstr "" #: templates/js/translated/search.js:352 msgid "Minimize results" -msgstr "Ergebnisse minimieren" +msgstr "" #: templates/js/translated/search.js:355 msgid "Remove results" -msgstr "Ergebnisse entfernen" +msgstr "" #: templates/js/translated/stock.js:98 msgid "Serialize Stock Item" -msgstr "Lagerartikel serialisieren" +msgstr "" #: templates/js/translated/stock.js:129 msgid "Confirm Stock Serialization" -msgstr "Lager-Serialisierung bestätigen" +msgstr "" #: templates/js/translated/stock.js:139 msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" @@ -12566,7 +12836,7 @@ msgstr "" #: templates/js/translated/stock.js:152 msgid "Parent stock location" -msgstr "Übergeordneter Lagerort" +msgstr "" #: templates/js/translated/stock.js:166 msgid "Add Location type" @@ -12574,11 +12844,11 @@ msgstr "" #: templates/js/translated/stock.js:202 msgid "Edit Stock Location" -msgstr "Lagerartikel-Ort bearbeiten" +msgstr "" #: templates/js/translated/stock.js:217 msgid "New Stock Location" -msgstr "Neuer Lagerstandort" +msgstr "" #: templates/js/translated/stock.js:219 msgid "Create another location after this one" @@ -12590,27 +12860,27 @@ msgstr "" #: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" -msgstr "Sind Sie sicher, dass Sie diesen Lagerort löschen wollen?" +msgstr "" #: templates/js/translated/stock.js:241 msgid "Move to parent stock location" -msgstr "Zum übergeordneten Lagerbestand verschieben" +msgstr "" #: templates/js/translated/stock.js:250 msgid "Delete Stock Location" -msgstr "Bestand-Lagerort löschen" +msgstr "" #: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" -msgstr "Aktion für Lagerartikel in diesem Lagerort" +msgstr "" #: templates/js/translated/stock.js:259 msgid "Action for sub-locations" -msgstr "Aktion für Unter-Lagerorte" +msgstr "" #: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" -msgstr "Dieser Teil kann nicht serialisiert werden" +msgstr "" #: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" @@ -12618,31 +12888,31 @@ msgstr "" #: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" -msgstr "Ausgangsmenge für diesen Lagerartikel eingeben" +msgstr "" #: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "Seriennummern für neue Lagerartikel eingeben (oder leer lassen)" +msgstr "" #: templates/js/translated/stock.js:439 msgid "Stock item duplicated" -msgstr "Lagerartikel dupliziert" +msgstr "" #: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" -msgstr "Bestand duplizieren" +msgstr "" #: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" -msgstr "Sind Sie sicher, dass Sie diesen Lagerartikel löschen wollen?" +msgstr "" #: templates/js/translated/stock.js:480 msgid "Delete Stock Item" -msgstr "Lagerartikel löschen" +msgstr "" #: templates/js/translated/stock.js:501 msgid "Edit Stock Item" -msgstr "Lagerartikel bearbeiten" +msgstr "" #: templates/js/translated/stock.js:543 msgid "Create another item after this one" @@ -12650,111 +12920,111 @@ msgstr "" #: templates/js/translated/stock.js:555 msgid "Created new stock item" -msgstr "Neuer Lagerartikel erstellt" +msgstr "" #: templates/js/translated/stock.js:568 msgid "Created multiple stock items" -msgstr "Mehrere Lagerartikel erstellt" +msgstr "" #: templates/js/translated/stock.js:593 msgid "Find Serial Number" -msgstr "Seriennummer finden" +msgstr "" #: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "Seriennummer eingeben" +msgstr "" #: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "Eine Seriennummer eingeben" +msgstr "" #: templates/js/translated/stock.js:634 msgid "No matching serial number" -msgstr "Keine passende Seriennummer" +msgstr "" #: templates/js/translated/stock.js:643 msgid "More than one matching result found" -msgstr "Mehrere Ergebnisse gefunden" +msgstr "" #: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" -msgstr "Bestand Zuweisung bestätigen" +msgstr "" #: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" -msgstr "Einem Kunden zuordnen" +msgstr "" #: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" -msgstr "Achtung: Das Zusammenführen kann nicht rückgängig gemacht werden" +msgstr "" #: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" -msgstr "Einige Informationen gehen verloren, wenn Artikel zusammengeführt werden" +msgstr "" #: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" -msgstr "Lagerartikelverlauf wird für zusammengeführte Lagerartikel gelöscht" +msgstr "" #: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" -msgstr "Lieferantenteil-Informationen werden für zusammengeführte Artikel gelöscht" +msgstr "" #: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" -msgstr "Zusammenführung der Artikel bestätigen" +msgstr "" #: templates/js/translated/stock.js:929 msgid "Merge Stock Items" -msgstr "Artikel zusammenführen" +msgstr "" #: templates/js/translated/stock.js:1024 msgid "Transfer Stock" -msgstr "Bestand verschieben" +msgstr "" #: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "Verschieben" +msgstr "" #: templates/js/translated/stock.js:1031 msgid "Count Stock" -msgstr "Bestand zählen" +msgstr "" #: templates/js/translated/stock.js:1032 msgid "Count" -msgstr "Anzahl" +msgstr "" #: templates/js/translated/stock.js:1036 msgid "Remove Stock" -msgstr "Bestand entfernen" +msgstr "" #: templates/js/translated/stock.js:1037 msgid "Take" -msgstr "Entfernen" +msgstr "" #: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "Bestand hinzufügen" +msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "Hinzufügen" #: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "Bestand löschen" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" -msgstr "Menge von serialisiertem Bestand kann nicht bearbeitet werden" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" -msgstr "Bestandsanzahl angeben" +msgstr "" #: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" -msgstr "Lagerartikel auswählen" +msgstr "" #: templates/js/translated/stock.js:1178 msgid "Select at least one available stock item" @@ -12762,59 +13032,59 @@ msgstr "" #: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" -msgstr "Bestands-Anpassung bestätigen" +msgstr "" #: templates/js/translated/stock.js:1360 msgid "PASS" -msgstr "ERFOLGREICH" +msgstr "" #: templates/js/translated/stock.js:1362 msgid "FAIL" -msgstr "FEHLGESCHLAGEN" +msgstr "" #: templates/js/translated/stock.js:1367 msgid "NO RESULT" -msgstr "KEIN ERGEBNIS" +msgstr "" #: templates/js/translated/stock.js:1429 msgid "Pass test" -msgstr "Test bestanden" +msgstr "" #: templates/js/translated/stock.js:1432 msgid "Add test result" -msgstr "Testergebnis hinzufügen" +msgstr "" #: templates/js/translated/stock.js:1456 msgid "No test results found" -msgstr "Keine Testergebnisse gefunden" +msgstr "" #: templates/js/translated/stock.js:1520 msgid "Test Date" -msgstr "Testdatum" +msgstr "" #: templates/js/translated/stock.js:1682 msgid "Edit Test Result" -msgstr "Testergebnis bearbeiten" +msgstr "" #: templates/js/translated/stock.js:1704 msgid "Delete Test Result" -msgstr "Testergebnis löschen" +msgstr "" #: templates/js/translated/stock.js:1736 msgid "In production" -msgstr "In Arbeit" +msgstr "" #: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" -msgstr "In Lagerartikel installiert" +msgstr "" #: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" -msgstr "Auftrag zugewiesen" +msgstr "" #: templates/js/translated/stock.js:1754 msgid "No stock location set" -msgstr "Kein Lagerort gesetzt" +msgstr "" #: templates/js/translated/stock.js:1810 msgid "Change stock status" @@ -12822,11 +13092,11 @@ msgstr "" #: templates/js/translated/stock.js:1819 msgid "Merge stock" -msgstr "Bestand zusammenführen" +msgstr "" #: templates/js/translated/stock.js:1868 msgid "Delete stock" -msgstr "Bestand löschen" +msgstr "" #: templates/js/translated/stock.js:1923 msgid "stock items" @@ -12846,31 +13116,31 @@ msgstr "" #: templates/js/translated/stock.js:2061 msgid "Stock item is in production" -msgstr "Lagerartikel wird produziert" +msgstr "" #: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" -msgstr "Lagerartikel wurde Auftrag zugewiesen" +msgstr "" #: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" -msgstr "Lagerartikel wurde Kunden zugewiesen" +msgstr "" #: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" -msgstr "Serialisierter Lagerartikel wurde zugewiesen" +msgstr "" #: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" -msgstr "Lagerartikel wurde vollständig zugewiesen" +msgstr "" #: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" -msgstr "Lagerartikel wurde teilweise zugewiesen" +msgstr "" #: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" -msgstr "Lagerartikel in anderem Element verbaut" +msgstr "" #: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" @@ -12878,40 +13148,40 @@ msgstr "" #: templates/js/translated/stock.js:2085 msgid "Stock item has expired" -msgstr "Lagerartikel ist abgelaufen" +msgstr "" #: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" -msgstr "Lagerartikel läuft demnächst ab" +msgstr "" #: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" -msgstr "Lagerartikel abgewiesen" +msgstr "" #: templates/js/translated/stock.js:2094 msgid "Stock item is lost" -msgstr "Lagerartikel verloren" +msgstr "" #: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" -msgstr "Lagerartikel zerstört" +msgstr "" #: templates/js/translated/stock.js:2100 #: templates/js/translated/table_filters.js:350 msgid "Depleted" -msgstr "gelöscht" +msgstr "" #: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" -msgstr "Zuliefererteil nicht angegeben" +msgstr "" #: templates/js/translated/stock.js:2312 msgid "Stock Value" -msgstr "Bestandswert" +msgstr "" #: templates/js/translated/stock.js:2440 msgid "No stock items matching query" -msgstr "Keine zur Anfrage passenden Lagerartikel" +msgstr "" #: templates/js/translated/stock.js:2544 msgid "stock locations" @@ -12923,7 +13193,7 @@ msgstr "" #: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "Details" +msgstr "" #: templates/js/translated/stock.js:2821 msgid "No changes" @@ -12931,11 +13201,11 @@ msgstr "" #: templates/js/translated/stock.js:2833 msgid "Part information unavailable" -msgstr "Artikelinformationen nicht verfügbar" +msgstr "" #: templates/js/translated/stock.js:2855 msgid "Location no longer exists" -msgstr "Standort nicht mehr vorhanden" +msgstr "" #: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" @@ -12943,7 +13213,7 @@ msgstr "" #: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" -msgstr "Bestellung existiert nicht mehr" +msgstr "" #: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" @@ -12955,59 +13225,59 @@ msgstr "" #: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" -msgstr "Kunde existiert nicht mehr" +msgstr "" #: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" -msgstr "Lagerartikel existiert nicht mehr" +msgstr "" #: templates/js/translated/stock.js:2976 msgid "Added" -msgstr "Hinzugefügt" +msgstr "" #: templates/js/translated/stock.js:2984 msgid "Removed" -msgstr "Entfernt" +msgstr "" #: templates/js/translated/stock.js:3056 msgid "No installed items" -msgstr "Keine installierten Elemente" +msgstr "" #: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" -msgstr "Lagerartikel entfernen" +msgstr "" #: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" -msgstr "Zu deinstallierende Lagerartikel auswählen" +msgstr "" #: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" -msgstr "Einen weiteren Lagerartikel in dieses Teil installiert" +msgstr "" #: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" -msgstr "Lagerartikel können nur installiert werden wenn folgende Kriterien erfüllt werden" +msgstr "" #: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" -msgstr "Der Lagerartikel ist auf ein Teil verknüpft das in der Stückliste für diesen Lagerartikel ist" +msgstr "" #: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" -msgstr "Dieser Lagerartikel ist aktuell vorhanden" +msgstr "" #: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" -msgstr "Der Lagerbestand ist nicht bereits in einem anderen Bestand installiert" +msgstr "" #: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" -msgstr "Der Lagerbestand wird entweder mit einem Batch-Code oder mit Seriennummer verfolgt" +msgstr "" #: templates/js/translated/stock.js:3205 msgid "Select part to install" -msgstr "Teil zur Installation auswählen" +msgstr "" #: templates/js/translated/stock.js:3268 msgid "Select one or more stock items" @@ -13030,51 +13300,51 @@ msgstr "" #: templates/js/translated/table_filters.js:613 #: templates/js/translated/table_filters.js:654 msgid "Order status" -msgstr "Bestellstatus" +msgstr "" #: templates/js/translated/table_filters.js:94 #: templates/js/translated/table_filters.js:618 #: templates/js/translated/table_filters.js:644 #: templates/js/translated/table_filters.js:659 msgid "Outstanding" -msgstr "ausstehend" +msgstr "" #: templates/js/translated/table_filters.js:102 #: templates/js/translated/table_filters.js:524 #: templates/js/translated/table_filters.js:626 #: templates/js/translated/table_filters.js:667 msgid "Assigned to me" -msgstr "Mir zugewiesen" +msgstr "" #: templates/js/translated/table_filters.js:158 msgid "Trackable Part" -msgstr "Nachverfolgbares Teil" +msgstr "" #: templates/js/translated/table_filters.js:162 msgid "Assembled Part" -msgstr "Baugruppe" +msgstr "" #: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" -msgstr "Hat verfügbaren Bestand" +msgstr "" #: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" -msgstr "Bestand an Varianten zulassen" +msgstr "" #: templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:775 msgid "Has Pricing" -msgstr "Hat Preis" +msgstr "" #: templates/js/translated/table_filters.js:234 #: templates/js/translated/table_filters.js:345 msgid "Include sublocations" -msgstr "Unter-Lagerorte einschließen" +msgstr "" #: templates/js/translated/table_filters.js:235 msgid "Include locations" -msgstr "Lagerorte einschließen" +msgstr "" #: templates/js/translated/table_filters.js:267 msgid "Has location type" @@ -13084,171 +13354,167 @@ msgstr "" #: templates/js/translated/table_filters.js:279 #: templates/js/translated/table_filters.js:707 msgid "Include subcategories" -msgstr "Unterkategorien einschließen" +msgstr "" #: templates/js/translated/table_filters.js:287 #: templates/js/translated/table_filters.js:755 msgid "Subscribed" -msgstr "Abonniert" +msgstr "" #: templates/js/translated/table_filters.js:298 #: templates/js/translated/table_filters.js:380 msgid "Is Serialized" -msgstr "Hat Seriennummer" +msgstr "" #: templates/js/translated/table_filters.js:301 #: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" -msgstr "Seriennummer >=" +msgstr "" #: templates/js/translated/table_filters.js:302 #: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" -msgstr "Seriennummer größer oder gleich" +msgstr "" #: templates/js/translated/table_filters.js:305 #: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" -msgstr "Seriennummer <=" +msgstr "" #: templates/js/translated/table_filters.js:306 #: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" -msgstr "Seriennummern kleiner oder gleich" +msgstr "" #: templates/js/translated/table_filters.js:309 #: templates/js/translated/table_filters.js:310 #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "Seriennummer" +msgstr "" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 msgid "Batch code" -msgstr "Losnummer" +msgstr "" #: templates/js/translated/table_filters.js:325 #: templates/js/translated/table_filters.js:696 msgid "Active parts" -msgstr "Aktive Teile" +msgstr "" #: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" -msgstr "Bestand aktiver Teile anzeigen" +msgstr "" #: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" -msgstr "Teil ist eine Baugruppe" +msgstr "" #: templates/js/translated/table_filters.js:335 msgid "Is allocated" -msgstr "Ist zugeordnet" +msgstr "" #: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" -msgstr "Teil wurde zugeordnet" +msgstr "" #: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" -msgstr "Lagerartikel ist zur Verwendung verfügbar" +msgstr "" #: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" -msgstr "Bestand in Unter-Lagerorten einschließen" +msgstr "" #: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" -msgstr "Zeige aufgebrauchte Lagerartikel" +msgstr "" #: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" -msgstr "Zeige Objekte welche im Lager sind" - -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "In Arbeit" +msgstr "" #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" -msgstr "Elemente, die in Produktion sind, anzeigen" +msgstr "" #: templates/js/translated/table_filters.js:365 msgid "Include Variants" -msgstr "Varianten einschließen" +msgstr "" #: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" -msgstr "Lagerartikel für Teil-Varianten einschließen" +msgstr "" #: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" -msgstr "Lagerartikel, die in anderen Elementen verbaut sind, anzeigen" +msgstr "" #: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" -msgstr "zeige zu Kunden zugeordnete Einträge" +msgstr "" #: templates/js/translated/table_filters.js:396 #: templates/js/translated/table_filters.js:397 msgid "Stock status" -msgstr "Status" +msgstr "" #: templates/js/translated/table_filters.js:400 msgid "Has batch code" -msgstr "Hat Batch-Code" +msgstr "" #: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" -msgstr "Lagerbestand wird entweder per Batch-Code oder Seriennummer verfolgt" +msgstr "" #: templates/js/translated/table_filters.js:414 msgid "Has purchase price" -msgstr "Hat Einkaufspreis" +msgstr "" #: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" -msgstr "Bestand mit Einkaufspreis anzeigen" +msgstr "" #: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" -msgstr "Ablaufdatum vor" +msgstr "" #: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" -msgstr "Ablaufdatum nach" +msgstr "" #: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" -msgstr "Zeige abgelaufene Lagerartikel" +msgstr "" #: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" -msgstr "Bestand, der bald ablaufen, anzeigen" +msgstr "" #: templates/js/translated/table_filters.js:456 msgid "Test Passed" -msgstr "Test bestanden" +msgstr "" #: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" -msgstr "Installierte Elemente einschließen" +msgstr "" #: templates/js/translated/table_filters.js:511 msgid "Build status" -msgstr "Bauauftrags-Status" +msgstr "" #: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" -msgstr "Teile in Unterkategorien einschließen" +msgstr "" #: templates/js/translated/table_filters.js:713 msgid "Show active parts" -msgstr "Aktive Teile anzeigen" +msgstr "" #: templates/js/translated/table_filters.js:721 msgid "Available stock" -msgstr "Verfügbarer Lagerbestand" +msgstr "" #: templates/js/translated/table_filters.js:729 #: templates/js/translated/table_filters.js:825 @@ -13261,23 +13527,23 @@ msgstr "" #: templates/js/translated/table_filters.js:734 msgid "Has IPN" -msgstr "Hat IPN" +msgstr "" #: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" -msgstr "Teil hat Interne Teilenummer" +msgstr "" #: templates/js/translated/table_filters.js:739 msgid "In stock" -msgstr "Auf Lager" +msgstr "" #: templates/js/translated/table_filters.js:747 msgid "Purchasable" -msgstr "Käuflich" +msgstr "" #: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" -msgstr "Hat Inventureinträge" +msgstr "" #: templates/js/translated/table_filters.js:821 msgid "Has Choices" @@ -13285,79 +13551,79 @@ msgstr "" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "Kalender-Ansicht" +msgstr "" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "Listen-Ansicht" +msgstr "" #: templates/js/translated/tables.js:112 msgid "Display tree view" -msgstr "Baumansicht zeigen" +msgstr "" #: templates/js/translated/tables.js:130 msgid "Expand all rows" -msgstr "Alle Zeilen erweitern" +msgstr "" #: templates/js/translated/tables.js:136 msgid "Collapse all rows" -msgstr "Alle Zeilen einklappen" +msgstr "" #: templates/js/translated/tables.js:186 msgid "Export Table Data" -msgstr "Tabellendaten exportieren" +msgstr "" #: templates/js/translated/tables.js:190 msgid "Select File Format" -msgstr "Dateiformat wählen" +msgstr "" #: templates/js/translated/tables.js:529 msgid "Loading data" -msgstr "Lade Daten" +msgstr "" #: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "Zeilen pro Seite" +msgstr "" #: templates/js/translated/tables.js:537 msgid "Showing all rows" -msgstr "Alle Zeilen anzeigen" +msgstr "" #: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "zeige" +msgstr "" #: templates/js/translated/tables.js:539 msgid "to" -msgstr "bis" +msgstr "" #: templates/js/translated/tables.js:539 msgid "of" -msgstr "von" +msgstr "" #: templates/js/translated/tables.js:539 msgid "rows" -msgstr "Zeilen" +msgstr "" #: templates/js/translated/tables.js:546 msgid "No matching results" -msgstr "Keine passenden Ergebnisse gefunden" +msgstr "" #: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" -msgstr "Zeige/Verstecke Pagination" +msgstr "" #: templates/js/translated/tables.js:555 msgid "Toggle" -msgstr "umschalten" +msgstr "" #: templates/js/translated/tables.js:558 msgid "Columns" -msgstr "Spalten" +msgstr "" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "Alle" +msgstr "" #: templates/navbar.html:45 msgid "Buy" @@ -13463,12 +13729,16 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" -msgstr "Sie sind dabei, Ihr %(provider_name)s Konto zu verwenden, um sich bei\n" -"%(site_name)s anzumelden.
Als letzten Schritt füllen Sie bitte folgendes Formular aus:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" +msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 msgid "Provider has not been configured" @@ -13546,27 +13816,27 @@ msgstr "Ja" msgid "No" msgstr "Nein" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "Benutzer" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "Welche Benutzer gehören zu dieser Gruppe" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "Persöhnliche Informationen" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "Berechtigungen" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "wichtige Daten" @@ -13610,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "Berechtigung geändert" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "Gruppe" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "Ansicht" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "Berechtigung Einträge anzuzeigen" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "Berechtigung Einträge zu erstellen" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "Ändern" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Berechtigungen Einträge zu ändern" -#: users/models.py:401 +#: users/models.py:413 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 abf37e2c45..712a2e535d 100644 --- a/InvenTree/locale/el/LC_MESSAGES/django.po +++ b/InvenTree/locale/el/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:42\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "Το API endpoint δε βρέθηκε" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Δεν έχετε δικαιώματα να το δείτε αυτό" @@ -43,7 +43,7 @@ msgstr "Δόθηκε μη έγκυρη ποσότητα" msgid "Invalid quantity supplied ({exc})" msgstr "Δόθηκε μη έγκυρη ποσότητα ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Μπορείτε να βρείτε λεπτομέρειες σφάλματος στον πίνακα διαχείρισης" @@ -51,18 +51,18 @@ msgstr "Μπορείτε να βρείτε λεπτομέρειες σφάλμα msgid "Enter date" msgstr "Εισάγετε ημερομηνία" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Η παρεχόμενη κύρια διεύθυνση ηλεκτρονι msgid "The provided email domain is not approved." msgstr "Ο παρεχόμενος τομέας ηλεκτρονικού ταχυδρομείου δεν έχει εγκριθεί." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Η εγγραφή είναι απενεργοποιημένη." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Μη έγκυρη ποσότητα" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Κενό σειριακό αριθμό συμβολοσειράς" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Διπλότυπο serial number" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Μη έγκυρο εύρος ομάδας: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Το εύρος της ομάδας {group} υπερβαίνει την επιτρεπόμενη ποσότητα ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Μη έγκυρη ακολουθία ομάδας: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Δεν βρέθηκαν σειριακοί αριθμοί" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Ο αριθμός μοναδικών σειριακών αριθμών ({len(serials)}) πρέπει να αντιστοιχεί στην ποσότητα ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Αφαιρέστε τα HTML tags από την τιμή που εισάγατε" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Σφάλμα σύνδεσης" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Ο διακομιστής απάντησε με μη έγκυρο κωδικό κατάστασης" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Προέκυψε σφάλμα" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Ο διακομιστής ανταποκρίθηκε με \"Invalid Content-Length value\"" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Η εικόνα είναι πολύ μεγάλη σε μέγεθος" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Η λήψη εικόνας ξεπέρασε το μέγιστο μέγεθος" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Ο διακομιστής επέστρεψε σφάλμα %1$d %2$s" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Το URL δεν είναι έγκυρο αρχείο εικόνας" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Σύνδεση στην εφαρμογή" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Βουλγάρικα" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Τσέχικα" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Γερμανικά" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Ελληνικά" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Αγγλικά" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Ισπανικά" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Ισπανικά (Μεξικό)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Φαρσί / Περσικά" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Φινλανδικά" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Γαλλικά" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Εβραϊκά" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Ινδικά" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Ούγγρικα" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Ιταλικά" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Ιαπωνικά" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Κορεάτικα" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Dutch" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Νορβηγικά" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Πολωνικά" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Πορτογαλικά" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Πορτογαλικά (Βραζιλίας)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Ρωσικά" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Σουηδικά" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Ταϊλανδέζικα" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Τούρκικα" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Βιετναμέζικα" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Κινέζικα (απλοποιημένα)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Κινέζικα (Παραδοσιακά)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "Email" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Τα μεταδεδομένα πρέπει να είναι ένα αντικείμενο dict python" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Μεταδεδομένα Πρόσθετου" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "JSON πεδίο μεταδεδομένων, για χρήση από εξωτερικά πρόσθετα" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Λανθασμένο μοτίβο" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Δώσατε λάθος μορφή κλειδιού" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Λείπει το απαραίτητο κλειδί" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Το πεδίο δεν μπορεί να είναι άδειο" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Η αναφορά πρέπει να ταιριάζει με το απαιτούμενο μοτίβο" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Ο αριθμός αναφοράς είναι πολύ μεγάλος" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Το αρχείο λείπει" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Λείπει ο εξωτερικός σύνδεσμος" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Συνημμένο" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Επιλέξτε αρχείο για επισύναψη" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Επιλέξτε αρχείο για επισύναψη" msgid "Link" msgstr "Σύνδεσμος" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Σύνδεσμος προς εξωτερική διεύθυνση URL" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Σχόλιο" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Σχόλιο αρχείου" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Χρήστης" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "ημερομηνία φόρτωσης" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Το όνομα αρχείου δεν μπορεί να είναι κενό" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Μη διαθέσιμη τοποθεσία συνημμένου" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Το όνομα αρχείου περιέχει μη έγκυρους χαρακτήρες '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Λείπει επέκταση ονόματος αρχείου" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Αρχείο με αυτό το όνομα υπάρχει ήδη" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Σφάλμα κατά τη μετονομασία" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "Διπλότυπα ονόματα δεν μπορούν να υπάρχουν στον ίδιο γονέα" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Μη έγκυρη επιλογή" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Μη έγκυρη επιλογή" msgid "Name" msgstr "Όνομα" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "Όνομα" msgid "Description" msgstr "Περιγραφή" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Περιγραφή (προαιρετική)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "γονέας" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Μονοπάτι" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Σημειώσεις Markdown (προαιρετικό)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Στοιχεία Barcode" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Δεδομένα barcode τρίτων" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Barcode Hash" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Μοναδικό hash δεδομένων barcode" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Βρέθηκε υπάρχων barcode" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Σφάλμα διακομιστή" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Ένα σφάλμα έχει καταγραφεί από το διακομιστή." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Πρέπει να είναι αριθμός" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Νόμισμα" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Επιλέξτε νόμισμα από τις διαθέσιμες επιλογές" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Όνομα αρχείου" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Μη έγκυρη τιμή" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Αρχείο Δεδομένων" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Επιλέξτε ένα αρχείο για ανέβασμα" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Μη υποστηριζόμενος τύπος αρχείου" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Το αρχείο είναι πολύ μεγάλο" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Δεν βρέθηκαν στήλες στο αρχείο" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Δεν βρέθηκαν γραμμές δεδομένων στο αρχείο" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Δεν παρασχέθηκαν σειρές δεδομένων" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Δεν δόθηκαν στήλες δεδομένων" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Λείπει απαιτούμενη στήλη: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Διπλή στήλη: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "Διεύθυνση URL του αρχείου απομακρυσμένης εικόνας" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Η λήψη εικόνων από απομακρυσμένο URL δεν είναι ενεργοποιημένη" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "Βουλγάρικα" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Τσέχικα" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Γερμανικά" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Ελληνικά" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Αγγλικά" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Ισπανικά" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Ισπανικά (Μεξικό)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Φαρσί / Περσικά" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Φινλανδικά" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Γαλλικά" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Εβραϊκά" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Ινδικά" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Ούγγρικα" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Ιταλικά" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Ιαπωνικά" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Κορεάτικα" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Dutch" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Νορβηγικά" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Πολωνικά" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Πορτογαλικά" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Πορτογαλικά (Βραζιλίας)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Ρωσικά" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Σουηδικά" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Ταϊλανδέζικα" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Τούρκικα" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Βιετναμέζικα" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Κινέζικα (απλοποιημένα)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Κινέζικα (Παραδοσιακά)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Ο έλεγχος εργασίας στο παρασκήνιο απέτυχε" @@ -712,7 +722,7 @@ msgstr "Επιστράφηκε" msgid "In Progress" msgstr "Σε Εξέλιξη" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "Σχετικά με το InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Η έκδοση πρέπει να ακυρωθεί πριν διαγραφεί" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Σειρά Κατασκευής" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "Σειρά Κατασκευής" msgid "Build Orders" msgstr "Δημιουργία Παραγγελιών" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Μη έγκυρη επιλογή για γονική κατασκευή" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Αναφορά Παραγγελίας Κατασκευής" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "Αναφορά Παραγγελίας Κατασκευής" msgid "Reference" msgstr "Αναφορά" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Γονική Κατασκευή" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατασκευή" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα msgid "Part" msgstr "Εξάρτημα" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Επιλέξτε τμήμα για κατασκευή" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Κωδικός Παραγγελίας Πωλήσεων" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "SalesOrder στην οποία έχει διατεθεί αυτό το build" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Τοποθεσία Προέλευσης" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Επιλέξτε τοποθεσία από την οποία θα γίνει απόθεμα, για αυτή την κατασκευή (αφήστε κενό για να πάρετε από οποιαδήποτε θέση αποθήκευσης)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Τοποθεσία Προορισμού" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Επιλέξτε την τοποθεσία όπου θα αποθηκευτούν τα ολοκληρωμένα στοιχεία" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Ποσότητα Κατασκευής" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Αριθμός αντικειμένων για κατασκευή" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Ολοκληρωμένα αντικείμενα" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Αριθμός αντικειμένων αποθέματος που έχουν ολοκληρωθεί" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Κατάσταση Κατασκευής" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Κωδικός κατάστασης κατασκευής" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Κωδικός Παρτίδας" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Κωδικός παρτίδας για αυτήν την κατασκευή" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Ημερομηνία Δημιουργίας" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Ημερομηνία ολοκλήρωσης στόχου" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Ημερομηνία ολοκλήρωσης της κατασκευής. Η κατασκευή θα καθυστερήσει μετά από αυτή την ημερομηνία." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Ημερομηνία ολοκλήρωσης" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "ολοκληρώθηκε από" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Εκδόθηκε από" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Χρήστης που εξέδωσε αυτήν την παραγγελία κατασκευής" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Υπεύθυνος" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Εξωτερικοί σύνδεσμοι" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Η παραγγελία κατασκευής {build} έχει ολοκληρωθεί" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Δεν καθορίστηκε έξοδος κατασκευής" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "Ποσότητα" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Το στοιχείο κατασκευής πρέπει να ορίζει μια έξοδο κατασκευής, καθώς το κύριο τμήμα επισημαίνεται ως ανιχνεύσιμο" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Η καταχωρημένη ποσότητα ({q}) δεν πρέπει να υπερβαίνει τη διαθέσιμη ποσότητα αποθέματος ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "Στοιχείο αποθέματος είναι υπερ-κατανεμημένο" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "Η ποσότητα πρέπει να είναι 1 για σειριακό απόθεμα" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "Στοιχείο Αποθέματος" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Στοιχείο πηγαίου αποθέματος" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Ποσότητα αποθέματος για διάθεση για κατασκευή" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Εγκατάσταση σε" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Αποθήκη προορισμού" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "Κατασκευή Εξόδου" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "Το εξερχόμενο μέρος δεν ταιριάζει με το μέρος BuildOrder" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "Αυτή η έξοδος κατασκευής δεν έχει εκχωρηθεί πλήρως" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "Εισάγετε ποσότητα για την έξοδο κατασκευής" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "Ακέραιη ποσότητα που απαιτείται για ανιχνεύσιμα μέρη" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Ακέραιη ποσότητα που απαιτείται, καθώς ο λογαριασμός των υλικών περιέχει ανιχνεύσιμα μέρη" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Σειριακοί αριθμοί" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "Εισάγετε ποσότητα για την έξοδο κατασκευής" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "Αυτόματη Κατανομή Σειριακών Αριθμών" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1985,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Κατασκευή" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11870,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index f1b74f18f6..21f40562ac 100644 --- a/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/InvenTree/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-16 11:14+0000\n" +"POT-Creation-Date: 2024-02-15 00:38+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,11 +18,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "" @@ -44,7 +44,7 @@ msgstr "" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "" @@ -52,18 +52,18 @@ msgstr "" msgid "Enter date" msgstr "" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -124,154 +124,286 @@ msgstr "" msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -282,71 +414,72 @@ msgstr "" msgid "Link" msgstr "" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -362,25 +495,25 @@ msgstr "" msgid "Name" msgstr "" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -399,274 +532,149 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "" -"Your account has been created.\n" -"\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "" @@ -715,7 +723,7 @@ msgstr "" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -878,10 +886,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -930,16 +934,16 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -951,18 +955,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -972,16 +976,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -992,27 +996,27 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1020,27 +1024,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1051,7 +1055,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1059,8 +1063,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1084,144 +1088,144 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1230,52 +1234,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1285,15 +1289,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1317,41 +1321,41 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1363,89 +1367,89 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1458,32 +1462,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1493,159 +1497,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1771,12 +1804,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1809,8 +1842,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1832,7 +1865,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1860,7 +1893,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1873,9 +1906,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1889,7 +1922,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1988,11 +2021,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2046,1410 +2079,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3457,101 +3511,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3561,31 +3615,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3623,6 +3677,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3661,184 +3775,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3850,11 +3964,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3865,67 +3979,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3940,58 +4054,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -4001,27 +4115,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4083,10 +4197,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4101,7 +4215,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4346,7 +4460,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4448,7 +4562,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4487,6 +4601,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4503,7 +4621,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4527,7 +4645,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4541,8 +4659,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4559,7 +4677,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4572,7 +4791,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4586,7 +4805,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4595,192 +4814,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4790,325 +5005,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5292,8 +5507,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5512,13 +5727,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5526,20 +5741,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5564,11 +5779,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5578,33 +5793,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5617,7 +5825,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5640,51 +5848,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5693,380 +5901,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6078,322 +6281,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6489,197 +6688,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6840,7 +7039,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7132,10 +7331,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7250,7 +7445,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7404,11 +7599,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7466,7 +7665,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7565,6 +7764,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7577,6 +7788,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7645,6 +7857,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7665,7 +7893,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7737,84 +7965,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7859,70 +8115,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7952,103 +8222,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8089,9 +8359,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8115,12 +8385,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8146,32 +8416,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8180,56 +8450,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8239,56 +8509,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8300,12 +8570,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8335,225 +8605,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8561,157 +8831,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8848,7 +9122,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8914,7 +9188,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9415,11 +9689,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9569,7 +9838,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9590,7 +9859,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10046,7 +10315,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10126,7 +10395,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10255,7 +10524,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10624,7 +10893,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10644,26 +10913,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10695,7 +10964,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10707,364 +10976,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11429,10 +11698,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11873,6 +12138,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12345,7 +12614,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12510,7 +12779,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12526,7 +12795,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12738,7 +13007,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13167,10 +13436,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13465,11 +13730,16 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format msgid "" -"You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +"\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13548,27 +13818,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13612,34 +13882,34 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 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 a56500940c..fef15b05aa 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Spanish, Mexico\n" "Language: es_MX\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "endpoint API no encontrado" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "El usuario no tiene permiso para ver este modelo" @@ -43,7 +43,7 @@ msgstr "La cantidad suministrada es inválida" msgid "Invalid quantity supplied ({exc})" msgstr "La cantidad suministrada es inválida ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Detalles del error pueden encontrarse en el panel de administración" @@ -51,18 +51,18 @@ msgstr "Detalles del error pueden encontrarse en el panel de administración" msgid "Enter date" msgstr "Ingrese la fecha" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "La dirección de correo electrónico principal proporcionada no es váli msgid "The provided email domain is not approved." msgstr "El dominio de correo electrónico proporcionado no está aprobado." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Registro deshabilitado." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Cantidad proporcionada no válida" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "No se ha proporcionado un número de serie" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Serie duplicada" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Rango de grupo inválido: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Rango del grupo {group} supera la cantidad permitida ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Secuencia de grupo inválida: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Numeros de serie no encontrados" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Los números de serie únicos ({len(serials)}) debe coincidir con la cantidad ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Eliminar etiquetas HTML de este valor" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Error de conexión" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "El servidor respondió con código de estado no válido" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Se ha producido una excepción" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "El servidor respondió con un valor de longitud de contenido inválido" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "El tamaño de la imagen es demasiado grande" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "La descarga de imagen excedió el tamaño máximo" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "El servidor remoto devolvió una respuesta vacía" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "La URL proporcionada no es un archivo de imagen válido" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Iniciar sesión en la aplicación" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Búlgaro" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Checo" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Danés" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Alemán" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Griego" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Inglés" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Español" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Español (México)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Farsi / Persa" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Finlandés" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Francés" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Hebreo" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Húngaro" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Italiano" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japonés" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Coreano" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Holandés" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Noruego" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Polaco" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugués" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugués (Brasileño)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Ruso" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Esloveno" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Serbio" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Sueco" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Tailandés" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Turco" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnamita" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Chino (Simplificado)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Chino (Tradicional)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "Correo electrónico" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Los metadatos deben ser un objeto diccionario de python" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Metadatos del complemento" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "Campo de metadatos JSON, para uso por complementos externos" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Patrón con formato incorrecto" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Clave de formato especificado desconocida" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Falta la clave de formato necesaria" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "El campo de servidor no puede estar vacío" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "La referencia debe coincidir con la expresión regular {pattern}" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "El número de referencia es demasiado grande" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Archivo no encontrado" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Falta enlace externo" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Archivo adjunto" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Seleccionar archivo para adjuntar" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Seleccionar archivo para adjuntar" msgid "Link" msgstr "Enlace" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Enlace a URL externa" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Comentario" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Comentario del archivo" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Usuario" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "fecha de subida" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "El nombre del archivo no debe estar vacío" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Directorio de archivos adjuntos no válido" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "El nombre del archivo contiene el carácter ilegal '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Falta el nombre de extensión del archivo" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Ya existe un archivo adjunto con este nombre" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Error al cambiar el nombre del archivo" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "Los nombres duplicados no pueden existir bajo el mismo padre" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Selección no válida" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Selección no válida" msgid "Name" msgstr "Nombre" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,273 +531,149 @@ msgstr "Nombre" msgid "Description" msgstr "Descripción" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Descripción (opcional)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "padre" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Ruta" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Notas de Markdown (opcional)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Datos de código de barras" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Datos de código de barras de terceros" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Hash del Código de barras" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Hash único de datos de código de barras" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Código de barras existente encontrado" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Error de servidor" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Se ha registrado un error por el servidor." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Debe ser un número válido" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Moneda" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Seleccionar moneda de las opciones disponibles" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "No tiene permiso para cambiar este rol de usuario." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "Solo los superusuarios pueden crear nuevos usuarios" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" -msgstr "Bienvenido/a a {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." +msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." -msgstr "Su cuenta ha sido creada.\n\n" -"Por favor, utilice la función de restablecimiento de contraseña para obtener acceso (en https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" +msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Nombre de Archivo" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Valor inválido" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Archivo de datos" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Seleccione el archivo para subir" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Tipo de archivo no soportado" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "El archivo es demasiado grande" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "No hay columnas en el archivo" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "No hay filas de datos en el archivo" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "No se proporcionaron filas de datos" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "No hay columnas de datos proporcionadas" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Falta la columna requerida: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Columna duplicada: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "Imagen remota" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "URL de imagen remota" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "La descarga de imágenes desde la URL remota no está habilitada" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "Búlgaro" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Checo" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Danés" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Alemán" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Griego" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Inglés" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Español" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Español (México)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Farsi / Persa" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Finlandés" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Francés" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Hebreo" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Hindi" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Húngaro" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Italiano" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japonés" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Coreano" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Holandés" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Noruego" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Polaco" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugués" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugués (Brasileño)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Ruso" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Esloveno" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "Serbio" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Sueco" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Tailandés" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Turco" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnamita" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Chino (Simplificado)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Chino (Tradicional)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Falló la comprobación en segundo plano del worker" @@ -713,7 +722,7 @@ msgstr "Devuelto" msgid "In Progress" msgstr "En progreso" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -876,10 +885,6 @@ msgstr "Rechazo" msgid "Unknown database" msgstr "Base de datos desconocida" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Unidad física inválida" @@ -928,16 +933,16 @@ msgstr "Acerca de InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "La compilación debe cancelarse antes de poder ser eliminada" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "Consumible" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -949,18 +954,18 @@ msgstr "Opcional" msgid "Tracked" msgstr "Rastreado" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "Asignadas" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -970,16 +975,16 @@ msgstr "Asignadas" msgid "Available" msgstr "Disponible" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Construir órden" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -990,27 +995,27 @@ msgstr "Construir órden" msgid "Build Orders" msgstr "Construir órdenes" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Opción no válida para la construcción padre" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "La parte del pedido de construcción no puede ser modificada" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Número de orden de construcción o armado" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1018,27 +1023,27 @@ msgstr "Número de orden de construcción o armado" msgid "Reference" msgstr "Referencia" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "Breve descripción de la construcción (opcional)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Construcción o Armado Superior" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Orden de Construcción o Armado a la que se asigna" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1049,7 +1054,7 @@ msgstr "Orden de Construcción o Armado a la que se asigna" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1057,8 +1062,8 @@ msgstr "Orden de Construcción o Armado a la que se asigna" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1082,144 +1087,144 @@ msgstr "Orden de Construcción o Armado a la que se asigna" msgid "Part" msgstr "Parte" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Seleccionar parte a construir o armar" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Referencia de orden de venta" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Orden de Venta a la que se asigna" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Ubicación de la fuente" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Seleccione la ubicación de donde tomar stock para esta construcción o armado (deje en blanco para tomar desde cualquier ubicación)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Ubicación de destino" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Seleccione la ubicación donde se almacenarán los artículos completados" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Cantidad a crear" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Número de objetos existentes a construir" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Elementos completados" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Número de productos en stock que se han completado" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Estado de la construcción" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Código de estado de construcción" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Numero de lote" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Número de lote de este producto final" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Fecha de Creación" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Fecha límite de finalización" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Fecha límite para la finalización de la construcción. La construcción estará vencida después de esta fecha." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Fecha de finalización" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "terminado por" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Emitido por" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "El usuario que emitió esta orden" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Responsable" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "Usuario o grupo responsable de esta orden de construcción" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Link externo" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "Prioridad de construcción" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "Prioridad de esta orden de construcción" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1228,52 +1233,52 @@ msgstr "Prioridad de esta orden de construcción" msgid "Project Code" msgstr "Código del proyecto" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "Código de proyecto para esta orden de ensamble" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "El pedido {build} ha sido procesado" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "Pedido #[order] ha sido procesado" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "No se ha especificado salida de construcción" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "La construcción de la salida ya está completa" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "La salida de la construcción no coincide con el orden de construcción" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "La cantidad debe ser mayor que cero" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "La cantidad no puede ser mayor que la cantidad de salida" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "Ensamblar equipo" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1283,15 +1288,15 @@ msgstr "Ensamblar equipo" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1315,41 +1320,41 @@ msgstr "Ensamblar equipo" msgid "Quantity" msgstr "Cantidad" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "Cantidad requerida para orden de ensamble" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Item de construcción o armado debe especificar un resultado o salida, ya que la parte maestra está marcada como rastreable" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Cantidad asignada ({q}) no debe exceder la cantidad disponible de stock ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "Artículo de stock sobreasignado" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Cantidad asignada debe ser mayor que cero" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "La cantidad debe ser 1 para el stock serializado" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "El artículo de almacén selelccionado no coincide con la línea BOM" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1361,89 +1366,89 @@ msgstr "El artículo de almacén selelccionado no coincide con la línea BOM" msgid "Stock Item" msgstr "Artículo de stock" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Producto original de stock" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Cantidad de stock a asignar para construir" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Instalar en" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Artículo de stock de destino" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "Resultado de la construcción o armado" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "La salida de construcción no coincide con la construcción padre" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "La parte de salida no coincide con la parte de la Orden de Construcción" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "Esta salida de construcción ya ha sido completada" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "Esta salida de construcción no está completamente asignada" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "Ingrese la cantidad para la producción de la construcción" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "Cantidad entera requerida para partes rastreables" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Cantidad entera requerida, ya que la factura de materiales contiene partes rastreables" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Números de serie" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "Introduzca los números de serie de salidas de construcción" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "Autoasignar Números de Serie" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "Asignar automáticamente los artículos requeridos con números de serie coincidentes" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "Los siguientes números seriales ya existen o son inválidos" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "Debe proporcionarse una lista de salidas de construcción" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1456,32 +1461,32 @@ msgstr "Debe proporcionarse una lista de salidas de construcción" msgid "Location" msgstr "Ubicación" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "Ubicación de almacén para salidas descartadas" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "Descartar asignaciones" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "Descartar cualquier asignación de existencias para las salidas descartadas" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "Razón para descartar la salida de ensamble(s)" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "Ubicación para las salidas de construcción completadas" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1491,159 +1496,188 @@ msgstr "Ubicación para las salidas de construcción completadas" msgid "Status" msgstr "Estado" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "Aceptar Asignación Incompleta" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "Completar salidas si el inventario no se ha asignado completamente" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "Quitar inventario asignado" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "Resta cualquier existencia que ya ha sido asignado a esta versión" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "Eliminar salidas incompletas" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "Eliminar cualquier salida de construcción que no se haya completado" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "No permitido" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "Aceptar como consumido por este pedido de construcción" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "Liberar antes de completar esta orden de construcción" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "Stock sobreasignado" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Cómo quieres manejar los artículos extra de inventario asignados a la orden de construcción" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "Algunos artículos de inventario han sido sobreasignados" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "Aceptar no asignado" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Aceptar que los artículos de stock no se han asignado completamente a este pedido de construcción" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "El stock requerido no ha sido completamente asignado" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "Aceptar incompleto" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "Aceptar que el número requerido de salidas de construcción no se han completado" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "La cantidad de construcción requerida aún no se ha completado" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "El orden de construcción tiene salidas incompletas" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "Linea de ensamble" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "Resultado de la construcción o armado" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "La salida de la construcción debe apuntar a la misma construcción" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "Crear partida" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part debe apuntar a la misma parte que la orden de construcción" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "El artículo debe estar en stock" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Cantidad disponible ({q}) excedida" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "La salida de la construcción debe especificarse para la asignación de partes rastreadas" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "La salida de construcción no se puede especificar para la asignación de partes no rastreadas" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "Debe proporcionarse la adjudicación de artículos" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Ubicación de inventario donde las partes deben ser obtenidas (dejar en blanco para tomar de cualquier ubicación)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "Excluir ubicación" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "Excluir artículos de stock de esta ubicación seleccionada" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "Stock intercambiable" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Los artículos de inventario en múltiples ubicaciones se pueden utilizar de forma intercambiable" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "Sustituir stock" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "Permitir la asignación de partes sustitutas" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "Elementos opcionales" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "Asignar artículos de la BOM opcionales para construir la orden" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "Item de Lista de Materiales" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "En pedido" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "Stock Disponible" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "Stock requerido para la orden de construcción" @@ -1769,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Stock no ha sido asignado completamente a este pedido de construcción" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1807,8 +1841,8 @@ msgid "Completed Outputs" msgstr "Salidas completadas" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1830,21 +1864,21 @@ msgid "Issued By" msgstr "Emitido por" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "Prioridad" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "Eliminar Orden de Trabajo" +msgstr "" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "Código QR del pedido de contrucción" +msgstr "" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "Enlazar código de barras a orden de construcción" +msgstr "" #: build/templates/build/detail.html:15 msgid "Build Details" @@ -1858,7 +1892,7 @@ msgstr "Fuente de stock" msgid "Stock can be taken from any available location." msgstr "Las existencias se pueden tomar desde cualquier ubicación disponible." -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "Destinación" @@ -1871,9 +1905,9 @@ msgstr "Se requiere ubicación de destino" msgid "Allocated Parts" msgstr "Partes asignadas" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1887,7 +1921,7 @@ msgstr "Lote" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "Creado" @@ -1986,13 +2020,13 @@ msgstr "Adjuntos" msgid "Build Notes" msgstr "Notas del Trabajo" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" -msgstr "Asignación completa" +msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" -msgstr "Todas las líneas han sido completamente asignadas" +msgstr "" #: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" @@ -2044,1410 +2078,1431 @@ msgstr "Archivo {name.title()}" msgid "Select {name} file to upload" msgstr "Seleccione el archivo {name} para subir" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "Actualizado" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Fecha y hora de la última actualización" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "Código único del proyecto" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "Descripción del proyecto" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "Usuario o grupo responsable de este projecto" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "Clave de configuración (debe ser única - mayúsculas y minúsculas)" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "Valor de ajuste" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "El valor elegido no es una opción válida" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "El valor debe ser un valor booleano" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "El valor debe ser un entero" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "Cadena de clave debe ser única" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "Sin grupo" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "Un dominio vacío no está permitido." -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Nombre de dominio inválido: {domain}" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "Sin plugin" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "Reinicio requerido" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "Se ha cambiado una configuración que requiere un reinicio del servidor" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "Migraciones pendientes" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "Número de migraciones de base de datos pendientes" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "Nombre de la instancia del servidor" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "Descriptor de cadena para la instancia del servidor" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "Usar nombre de instancia" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "Utilice el nombre de la instancia en la barra de título" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "Restringir mostrar 'acerca de'" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "Mostrar la modal `about` solo para superusuarios" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Nombre de empresa" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "Nombre interno de empresa" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "URL Base" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "URL base para la instancia del servidor" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Moneda predeterminada" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "Seleccione la moneda base para los cálculos de precios" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "Intervalo de actualización de moneda" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "Con qué frecuencia actualizar los tipos de cambio (establecer a cero para desactivar)" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "días" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "Plugin de Actualización de Moneda" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "Plugin de actualización de moneda a usar" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "Descargar desde URL" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "Permitir la descarga de imágenes y archivos remotos desde la URL externa" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "Límite de tamaño de descarga" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "Tamaño máximo de descarga permitido para la imagen remota" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "Agente de usuario usado para descargar desde la URL" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "Permitir reemplazar el agente de usuario utilizado para descargar imágenes y archivos desde URL externa (dejar en blanco para el valor predeterminado)" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "Validación estricta de URL" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "Requerir especificación de esquema al validar URLs" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "Requiere confirmación" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "Requiere confirmación explícita del usuario para ciertas acciones." -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "Profundidad del árbol" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "Profundidad de árbol predeterminada para treeview. Los niveles más profundos pueden ser cargados perezosamente a medida que son necesarios." -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "Actualizar intervalo de actualización" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "Con qué frecuencia comprobar actualizaciones (establecer a cero para desactivar)" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "Copia de seguridad automática" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "Activar copia de seguridad automática de los archivos de base de datos y medios" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "Intervalo de respaldo automático" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "Especificar número de días entre eventos automatizados de copia de seguridad" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "Intervalo de eliminación de tareas" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "Los resultados de las tareas en segundo plano se eliminarán después del número especificado de días" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "Intervalo de eliminación de registro de errores" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "Los registros de errores se eliminarán después del número especificado de días" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "Intervalo de eliminación de notificaciones" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "Las notificaciones de usuario se eliminarán después del número especificado de días" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Soporte de código de barras" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "Habilitar el soporte para escáner de códigos de barras en la interfaz web" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "Retraso de entrada de código de barras" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "Tiempo de retraso en la lectura de códigos de barras" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "Soporte para Webcam de código de barras" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "Permitir escaneo de código de barras a través de webcam en el navegador" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "Revisiones de partes" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "Habilitar campo de revisión para parte" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "Regex IPN" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "Patrón de expresión regular para IPN de la parte coincidente" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "Permitir IPN duplicado" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "Permitir que varias partes compartan el mismo IPN" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "Permitir editar IPN" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "Permite cambiar el valor de IPN mientras se edita una parte" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "Copiar parte de datos BOM" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "Copiar datos BOM por defecto al duplicar una parte" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "Copiar parámetros de parte" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "Copiar datos de parámetro por defecto al duplicar una parte" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "Copiar parte de datos de prueba" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "Copiar datos de parámetro por defecto al duplicar una parte" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "Copiar plantillas de parámetros de categoría" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "Copiar plantillas de parámetros de categoría al crear una parte" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Plantilla" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "Las partes son plantillas por defecto" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Montaje" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "Las partes pueden ser ensambladas desde otros componentes por defecto" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Componente" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "Las partes pueden ser usadas como subcomponentes por defecto" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Comprable" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "Las partes son comprables por defecto" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Vendible" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "Las partes se pueden vender por defecto" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Rastreable" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "Las partes son rastreables por defecto" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtual" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "Las partes son virtuales por defecto" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "Mostrar importación en vistas" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "Mostrar el asistente de importación en algunas vistas de partes" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "Mostrar partes relacionadas" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "Mostrar partes relacionadas para una parte" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "Datos iniciales de existencias" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "Permitir la creación del stock inicial al añadir una nueva parte" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Datos iniciales del proveedor" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Permitir la creación de datos iniciales del proveedor al agregar una nueva parte" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "Formato de visualización de Nombre de Parte" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "Formato para mostrar el nombre de la parte" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "Icono por defecto de la categoría de parte" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "Icono por defecto de la categoría de parte (vacío significa que no hay icono)" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "Forzar unidades de parámetro" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "Si se proporcionan unidades, los valores de parámetro deben coincidir con las unidades especificadas" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "Mínimo de lugares decimales en el precio" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Número mínimo de decimales a mostrar al procesar los datos de precios" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "Máximo de lugares decimales en el precio" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Número máximo de decimales a mostrar al procesar los datos de precios" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "Usar precios de proveedor" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Incluir descuentos de precios del proveedor en los cálculos generales de precios" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "Anulación del historial de compra" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "El precio histórico de compra anula los descuentos de precios del proveedor" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "Usar precio del artículo de almacén" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Usar los precios de los datos de inventario introducidos manualmente para los cálculos de precios" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "Edad del precio del artículo de almacén" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Excluir artículos de almacén anteriores a este número de días de los cálculos de precios" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "Usar precios variantes" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "Incluir variantes de precios en los cálculos generales de precios" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "Solo variantes activas" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "Usar solo partes de variantes activas para calcular los precios de variantes" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "Intervalo de reconstrucción de precios" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "Número de días antes de que el precio de la parte se actualice automáticamente" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "Precios internos" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "Habilitar precios internos para partes" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "Anulación del precio interno" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "Si está disponible, los precios internos anulan los cálculos del rango de precios" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "Habilitar impresión de etiquetas" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "Habilitar impresión de etiquetas desde la interfaz web" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "PPP de la imagen de etiqueta" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "Resolución DPI al generar archivos de imagen que suministrar para etiquetar complementos de impresión" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "Habilitar informes" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "Habilitar generación de informes" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "Modo de depuración" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "Generar informes en modo de depuración (salida HTML)" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Tamaño de página" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "Tamaño de página predeterminado para informes PDF" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "Habilitar informes de prueba" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "Habilitar generación de informes de prueba" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "Adjuntar informes de prueba" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Al imprimir un informe de prueba, adjuntar una copia del informe de prueba al artículo de almacén asociado" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "Seriales únicos globalmente" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "Los números de serie para los artículos de inventario deben ser únicos globalmente" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "Autollenar números de serie" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "Autorellenar números de serie en formularios" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "Eliminar existencias agotadas" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "Determina el comportamiento predeterminado cuando un artículo de almacén es agotado" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "Plantilla de código de lote" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "Plantilla para generar códigos de lote por defecto para artículos de almacén" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "Expiración de stock" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "Habilitar la funcionalidad de expiración de stock" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "Vender existencias caducadas" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "Permitir venta de existencias caducadas" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "Tiempo histórico de Stock" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "Número de días de artículos de stock se consideran obsoletos antes de caducar" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "Crear Stock Caducado" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "Permitir crear con stock caducado" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "Control de Stock" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "Habilitar control de propiedad sobre ubicaciones de stock y artículos" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "Icono por defecto de ubicación de almacén" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "Icono por defecto de ubicación de almacén (vacío significa que no hay icono)" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "Mostrar Articulos de Stock Instalados" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "Mostrar los artículos de stock instalados en las tablas de stock" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "Patrón de Referencia de Ordenes de Armado" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "Patrón requerido para generar el campo de referencia de la Orden de Ensamblado" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "Habilitar órdenes de devolución" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "Habilitar la funcionalidad de orden de devolución en la interfaz de usuario" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "Patrón de referencia de orden de devolución" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "Patrón requerido para generar el campo de referencia de la orden de devolución" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "Editar ordenes de devolución completadas" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "Permitir la edición de ordenes de devolución después de que hayan sido completados" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "Patrón de Referencia de Ordenes de Venta" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "Patrón requerido para generar el campo de referencia de la orden de venta" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "Envío Predeterminado de Ordenes de Venta" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "Habilitar la creación de envío predeterminado con ordenes de entrega" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "Editar Ordenes de Venta Completados" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Permitir la edición de ordenes de venta después de que hayan sido enviados o completados" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "Patrón de Referencia de Orden de Compra" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "Patrón requerido para generar el campo de referencia de la Orden de Compra" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "Editar Ordenes de Compra Completados" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "Autocompletar Ordenes de compra" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "Habilitar función de contraseña olvidada" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "Activar la función olvido de contraseña en las páginas de inicio de sesión" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "Habilitar registro" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "Activar auto-registro para usuarios en las páginas de inicio de sesión" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "Habilitar SSO" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "Habilitar SSO en las páginas de inicio de sesión" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "Habilitar registro SSO" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Activar autoregistro a través de SSO para usuarios en las páginas de inicio de sesión" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "Email requerido" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "Requiere usuario para suministrar correo al registrarse" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "Auto-rellenar usuarios SSO" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "Rellenar automáticamente los datos de usuario de la cuenta SSO" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "Correo dos veces" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "Al registrarse pregunte dos veces a los usuarios por su correo" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "Contraseña dos veces" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "Al registrarse, preguntar dos veces a los usuarios por su contraseña" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "Dominios permitidos" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "Grupo al registrarse" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "Grupo al que se asignan nuevos usuarios al registrarse" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "Forzar MFA" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "Los usuarios deben utilizar seguridad multifactor." -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "Comprobar complementos al iniciar" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Comprobar que todos los complementos están instalados en el arranque - habilitar en entornos de contenedores" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "Habilitar integración de URL" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "Habilitar plugins para añadir rutas de URL" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "Habilitar integración de navegación" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "Habilitar plugins para integrar en la navegación" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "Habilitar integración de la aplicación" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "Habilitar plugins para añadir aplicaciones" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "Habilitar integración de programación" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "Habilitar plugins para ejecutar tareas programadas" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "Habilitar integración de eventos" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "Habilitar plugins para responder a eventos internos" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "Habilitar códigos de proyecto" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "Habilitar códigos de proyecto para rastrear proyectos" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "Excluir Ubicaciones Externas" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "Intervalo de borrado de informe" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "Mostrar nombres completos de los usuarios" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "Mostrar nombres completos de usuarios en lugar de nombres de usuario" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "Tecla de ajustes (debe ser única - mayúsculas y minúsculas" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "Ocultar partes inactivas" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Ocultar partes inactivas en los resultados mostrados en la página de inicio" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "Mostrar partes suscritas" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "Mostrar las partes suscritas en la página principal" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "Mostrar categorías suscritas" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "Mostrar categorías de partes suscritas en la página de inicio" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "Mostrar últimas partes" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "Mostrar las últimas partes en la página de inicio" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "Mostrar BOMs no validadas" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "Mostrar BOMs que esperan validación en la página de inicio" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "Mostrar cambios recientes de stock" -#: common/models.py:2009 +#: common/models.py:2054 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:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "Mostrar stock bajo" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "Mostrar artículos de stock bajo en la página de inicio" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "Mostrar stock agotado" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "Mostrar artículos agotados en la página de inicio" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "Mostrar stock necesario" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "Mostrar artículos de stock necesarios para trabajos en la página de inicio" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "Mostrar stock caducado" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "Mostrar artículos de stock caducados en la página de inicio" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "Mostrar stock obsoleto" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "Mostrar artículos de stock obsoletos en la página de inicio" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "Mostrar trabajos pendientes" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "Mostrar trabajos pendientes en la página de inicio" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "Mostrar trabajos vencidos" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "Mostrar trabajos pendientes en la página de inicio" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "Mostrar Órdenes de Compra Pendientes" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "Mostrar las OC destacadas en la página de inicio" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "Mostrar OC atrasadas" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "Mostrar las OC vencidas en la página de inicio" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "Mostrar OV pendiemtes" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "Mostrar OV pendientes en la página de inicio" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "Mostrar OV atrasadas" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "Mostrar OV atrasadas en la página de inicio" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "Mostrar novedades" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "Mostrar las últimas novedades de InvenTree en la página de inicio" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "Mostrar etiqueta interior" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Mostrar etiquetas PDF en el navegador, en lugar de descargar como un archivo" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "Impresora predeterminada" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "Mostrar informe en línea" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Mostrar informes PDF en el navegador, en lugar de descargar como un archivo" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "Buscar partes" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "Buscar partes de proveedor" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "Buscar Partes del Fabricante" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "Ocultar Partes Inactivas" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "Excluir las partes inactivas de la ventana de previsualización de búsqueda" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "Buscar categorías" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "Mostrar categorias de la parte en la ventana de previsualización de búsqueda" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "Buscar inventario" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "Mostrar artículos del stock en la ventana de previsualización de búsqueda" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "Ocultar Artículos del Stock Agotados" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "Excluir artículos de stock que no están disponibles en la ventana de previsualización de búsqueda" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "Buscar ubicaciones" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "Mostrar ubicaciones de almacén en la ventana de vista previa de búsqueda" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "Buscar empresas" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "Mostrar empresas en la ventana de vista previa de búsqueda" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "Buscar Pedidos de Construcción" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "Buscar órdenes de compra" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "Excluir pedidos de compra inactivos" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "Buscar órdenes de venta" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "Buscar órdenes de devolución" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "Resultados de la vista previa" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "Búsqueda usando una expresión regular" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "Habilitar expresiones regulares en las consultas de búsqueda" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "Búsqueda por palabra completa" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "Las consultas de búsqueda devuelven resultados para palabras enteras coincidentes" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "Mostrar cantidad en formularios" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "Mostrar la cantidad de partes disponibles en algunos formularios" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "Formularios de cierre de teclas de escape" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "Usa la clave de escape para cerrar formularios modales" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "Barra de navegación fija" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "La posición de la barra de navegación se fija en la parte superior de la pantalla" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "Formato de Fecha" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "Formato preferido para mostrar fechas" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Planificación de partes" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "Recibir reportes de error" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "Cantidad de salto de precio" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Precio" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "Precio unitario a la cantidad especificada" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "Endpoint" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "Punto final en el que se recibe este webhook" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "Nombre para este webhook" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3455,101 +3510,101 @@ msgstr "Nombre para este webhook" msgid "Active" msgstr "Activo" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "Está activo este webhook" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "Token" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "Token para el acceso" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "Clave" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "Secreto compartido para HMAC" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "ID de mensaje" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "Identificador único para este mensaje" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "Host" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "Servidor desde el cual se recibió este mensaje" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "Encabezado" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "Encabezado del mensaje" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "Cuerpo" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "Cuerpo de este mensaje" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "Endpoint en el que se recibió este mensaje" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "Trabajado en" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "¿El trabajo en este mensaje ha terminado?" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "Id" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Título" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "Publicado" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "Autor" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "Resumen" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "Leer" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "¿Esta noticia ya fue leída?" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3559,31 +3614,31 @@ msgstr "¿Esta noticia ya fue leída?" msgid "Image" msgstr "Imágen" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "Archivo de imagen" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "Nombre de unidad debe ser un identificador válido" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "Nombre de unidad" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Símbolo" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "Símbolo de unidad opcional" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definición" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "Definición de unidad" @@ -3621,6 +3676,66 @@ msgstr "Los artículos han sido recibidos contra una orden de devolución" msgid "Error raised by plugin" msgstr "Error generado por el complemento" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3659,184 +3774,184 @@ msgstr "Partes importadas" msgid "Previous Step" msgstr "Paso anterior" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "Descripción de la empresa" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "Descripción de la empresa" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "Página web" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "URL del sitio web de la empresa" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Teléfono" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "Teléfono de contacto" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "Correo electrónico de contacto" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Contacto" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "Punto de contacto" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "Enlace a información externa de la empresa" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "es cliente" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "¿Vendes artículos a esta empresa?" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "es proveedor" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "¿Compras artículos de esta empresa?" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "es fabricante" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "¿Esta empresa fabrica partes?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "Moneda predeterminada utilizada para esta empresa" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Empresa" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "Seleccionar empresa" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "Título de dirección" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "Título que describe la entrada de dirección" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "Dirección principal" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "Establecer como dirección principal" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "Línea 1" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "Dirección línea 1" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "Línea 2" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "Dirección línea 2" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "Código postal" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "Ciudad/región" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "Código postal de ciudad/región" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "Estado/provincia" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "Estado o provincia" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "País" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "Dirección de país" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "Notas de envío de mensajería" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "Notas para el mensajero de envío" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "Notas de envío internas" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "Notas de envío para uso interno" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "Enlace a información de dirección (externa)" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Parte base" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "Seleccionar parte" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3848,11 +3963,11 @@ msgstr "Seleccionar parte" msgid "Manufacturer" msgstr "Fabricante" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Seleccionar fabricante" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3863,67 +3978,67 @@ msgstr "Seleccionar fabricante" msgid "MPN" msgstr "MPN" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "Número de parte de fabricante" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "URL para el enlace de parte del fabricante externo" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "Descripción de la parte del fabricante" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Parte del fabricante" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "Nombre del parámetro" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Valor" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "Valor del parámetro" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "Unidades" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "Unidades de parámetro" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "Las unidades de paquete deben ser compatibles con las unidades de partes de base" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "Las unidades de paquete deben ser mayor que cero" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "La parte vinculada del fabricante debe hacer referencia a la misma parte base" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3938,58 +4053,58 @@ msgstr "La parte vinculada del fabricante debe hacer referencia a la misma parte msgid "Supplier" msgstr "Proveedor" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Seleccionar proveedor" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "Unidad de mantenimiento de stock de proveedores" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "Seleccionar parte del fabricante" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "URL del enlace de parte del proveedor externo" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "Descripción de la parte del proveedor" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "Nota" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "costo base" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "Cargo mínimo (p. ej., cuota de almacenamiento)" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Paquetes" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "Embalaje de partes" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3999,27 +4114,27 @@ msgstr "Embalaje de partes" msgid "Pack Quantity" msgstr "Cantidad de paquete" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "Cantidad total suministrada en un solo paquete. Dejar vacío para artículos individuales." -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "múltiple" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "Pedido múltiple" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "Cantidad disponible del proveedor" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "Disponibilidad actualizada" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "Fecha de última actualización de los datos de disponibilidad" @@ -4081,10 +4196,10 @@ msgstr "Descargar desde URL" msgid "Delete image" msgstr "Borrar imagen" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4099,7 +4214,7 @@ msgstr "Cliente" msgid "Uses default currency" msgstr "Usa la moneda predeterminada" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4113,11 +4228,11 @@ msgstr "Teléfono" #: company/templates/company/company_base.html:205 #: part/templates/part/part_base.html:528 msgid "Remove Image" -msgstr "Quitar imagen" +msgstr "" #: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" -msgstr "Eliminar imagen asociada a esta empresa" +msgstr "" #: company/templates/company/company_base.html:208 #: part/templates/part/part_base.html:531 @@ -4129,12 +4244,12 @@ msgstr "Eliminar" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "Cargar Imagen" +msgstr "" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "Descargar imagen" +msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 @@ -4317,7 +4432,7 @@ msgstr "Nuevo parámetro" #: company/templates/company/manufacturer_part.html:206 #: templates/js/translated/part.js:1422 msgid "Add Parameter" -msgstr "Añadir parámetro" +msgstr "" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" @@ -4344,7 +4459,7 @@ msgid "Addresses" msgstr "Direcciones" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4433,20 +4548,20 @@ msgstr "Agregar descuento de precio" #: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" -msgstr "Código QR de parte del proveedor" +msgstr "" #: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" -msgstr "Enlazar código de barras a la parte del proveedor" +msgstr "" #: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" -msgstr "Actualizar disponibilidad de parte" +msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4485,6 +4600,10 @@ msgstr "Empresas" msgid "New Company" msgstr "Nueva empresa" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "Nombre etiqueta" @@ -4501,7 +4620,7 @@ msgstr "Etiqueta" msgid "Label template file" msgstr "Archivo de plantilla de etiqueta" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "Habilitado" @@ -4525,7 +4644,7 @@ msgstr "Altura [mm]" msgid "Label height, specified in mm" msgstr "Altura de la etiqueta, especificada en mm" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "Patrón de Nombre de archivo" @@ -4539,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "Filtros" @@ -4557,7 +4676,108 @@ msgstr "Código QR" msgid "QR code" msgstr "Código QR" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "Desconocido" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4570,7 +4790,7 @@ msgstr "Precio Total" msgid "No matching purchase order found" msgstr "No se encontró ninguna orden de compra coincidente" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4584,7 +4804,7 @@ msgstr "No se encontró ninguna orden de compra coincidente" msgid "Purchase Order" msgstr "Orden de compra" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4593,192 +4813,188 @@ msgstr "Orden de compra" msgid "Return Order" msgstr "Orden de devolución" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "Desconocido" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "Precio total para este pedido" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "Moneda de pedido" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "Moneda para este pedido (dejar en blanco para utilizar el valor predeterminado de la empresa)" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "El contacto no coincide con la empresa seleccionada" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "Descripción del pedido (opcional)" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "Seleccione el código del proyecto para este pedido" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "Enlace a Url externa" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Fecha esperada para la entrega del pedido. El pedido se retrasará después de esta fecha." -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "Creado por" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "Usuario o grupo responsable de este pedido" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "Punto de contacto para este pedido" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "Dirección de la empresa para este pedido" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "Referencia del pedido" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "Estado de la orden de compra" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "Empresa de la cual se están encargando los artículos" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "Referencia del proveedor" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "Código de referencia de pedido del proveedor" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "recibido por" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "Fecha de emisión" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "Fecha de expedición del pedido" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "La fecha de pedido fue completada" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "El proveedor de la parte debe coincidir con el proveedor de PO" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "La cantidad debe ser un número positivo" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "Empresa a la que se venden los artículos" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "Referencia del cliente " -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "Código de referencia de pedido del cliente" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "Fecha de envío" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "enviado por" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "El pedido no se puede completar porque no se han asignado partes" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "Sólo una orden abierta puede ser marcada como completa" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "El pedido no se puede completar porque hay envíos incompletos" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "El pedido no se puede completar porque hay partidas incompletas" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "Cantidad del artículo" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "Referencia de partida" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "Notas de partida" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "Fecha objetivo para esta partida (dejar en blanco para usar la fecha de destino de la orden)" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "Descripción de partida (opcional)" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "Contexto" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "Contexto adicional para esta línea" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "Precio unitario" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "La parte del proveedor debe coincidir con el proveedor" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "eliminado" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "Orden" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "Parte del proveedor" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4788,325 +5004,325 @@ msgstr "Parte del proveedor" msgid "Received" msgstr "Recibido" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "Número de artículos recibidos" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Precio de Compra" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "Precio de compra unitario" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "¿Dónde quiere el comprador almacenar este objeto?" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "Una parte virtual no puede ser asignada a un pedido de venta" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "Sólo las partes vendibles pueden ser asignadas a un pedido de venta" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Precio de Venta" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "Precio de venta unitario" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "Cantidad enviada" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "Fecha del envío" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "Fecha de entrega" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "Fecha de entrega del envío" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "Revisado por" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "Usuario que revisó este envío" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Envío" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "Número de envío" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "Número de Seguimiento" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "Información de seguimiento del envío" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "Número de factura" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "Número de referencia para la factura asociada" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "El envío ya ha sido enviado" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "El envío no tiene artículos de stock asignados" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "El artículo de stock no ha sido asignado" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "No se puede asignar el artículo de stock a una línea con una parte diferente" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "No se puede asignar stock a una línea sin una parte" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "La cantidad de asignación no puede exceder la cantidad de stock" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "La cantidad debe ser 1 para el stock serializado" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "La orden de venta no coincide con el envío" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "El envío no coincide con el pedido de venta" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "Línea" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "Referencia del envío del pedido de venta" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "Ítem" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "Seleccionar artículo de stock para asignar" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "Especificar la cantidad de asignación de stock" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "Referencia de la orden de devolución" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "Empresa de la cual se están devolviendo los artículos" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "Estado de la orden de devolución" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "Sólo los artículos serializados pueden ser asignados a una orden de devolución" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "Seleccionar el artículo a devolver del cliente" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "Fecha de recepción" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "La fecha en la que se recibió este artículo de devolución" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Resultado" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "Salida para esta partida" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "Costo asociado con la devolución o reparación para esta partida" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "El pedido no puede ser cancelado" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "Permitir cerrar el pedido con partidas incompletas" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "El pedido tiene partidas incompletas" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "El pedido no está abierto" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "Moneda del precio de compra" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "Debe especificar la parte del proveedor" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "La orden de compra debe especificarse" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "El proveedor debe coincidir con la orden de compra" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "La orden de compra debe coincidir con el proveedor" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "Partida" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "La partida no coincide con la orden de compra" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "Seleccione la ubicación de destino para los artículos recibidos" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "Introduzca el código de lote para los artículos de almacén entrantes" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "Introduzca números de serie para artículos de almacén entrantes" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Código de barras" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "Código de barras escaneado" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "Código de barras en uso" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "Debe proporcionarse una cantidad entera para las partes rastreables" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "Se deben proporcionar las partidas" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "Se requiere ubicación de destino" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "Los valores del código de barras deben ser únicos" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "Moneda del precio de venta" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "No se proporcionaron detalles de envío" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "La partida no está asociada con este pedido" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "La cantidad debe ser positiva" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "Introduzca números de serie para asignar" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "El envío ya ha sido enviado" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "El envío no está asociado con este pedido" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "No se han encontrado coincidencias para los siguientes números de serie" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "Los siguientes números de serie ya están asignados" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "Partida de orden de devolución" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "La partida no coincide con la orden de devolución" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "La partida ya ha sido recibida" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "Los artículos sólo pueden ser recibidos contra pedidos en curso" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "Moneda de precio de línea" @@ -5235,11 +5451,11 @@ msgstr "No se ha podido calcular el costo total" #: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" -msgstr "Código QR de la orden de compra" +msgstr "" #: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" -msgstr "Vincular código de barras a la orden de compra" +msgstr "" #: order/templates/order/order_wizard/match_fields.html:9 #: part/templates/part/import_wizard/ajax_match_fields.html:9 @@ -5290,8 +5506,8 @@ msgstr "Duplicar selección" #: 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5428,11 +5644,11 @@ msgstr "Costo Total" #: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" -msgstr "Devolver código QR del pedido" +msgstr "" #: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" -msgstr "Enlazar código de barras al pedido de devolución" +msgstr "" #: order/templates/order/return_order_sidebar.html:5 msgid "Order Details" @@ -5464,11 +5680,11 @@ msgstr "Envíos completados" #: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" -msgstr "Código QR del pedido de ventas" +msgstr "" #: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" -msgstr "Enlazar código de barras al pedido de venta" +msgstr "" #: order/templates/order/sales_order_detail.html:18 msgid "Sales Order Items" @@ -5510,13 +5726,13 @@ msgstr "Actualizado el precio unitario de {part} a {price}" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "Actualizado el precio unitario de {part} a {price} y la cantidad a {qty}" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "ID de Parte" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "Nombre de parte" @@ -5524,20 +5740,20 @@ msgstr "Nombre de parte" msgid "Part Description" msgstr "Descripción de parte" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "IPN" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Revisión" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Palabras claves" @@ -5562,11 +5778,11 @@ msgstr "ID de ubicación predeterminada" msgid "Default Supplier ID" msgstr "ID de proveedor predeterminado" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variante de" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Stock mínimo" @@ -5576,33 +5792,26 @@ msgstr "Stock mínimo" msgid "In Stock" msgstr "En Stock" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "En pedido" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "Usado en" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "En construcción" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "Costo mínimo" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "Costo máximo" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "Identificador de la clase o especie padre" @@ -5615,7 +5824,7 @@ msgstr "Nombre del padre" msgid "Category Path" msgstr "Ruta de Categoría" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5638,51 +5847,51 @@ msgstr "ID de artículo de BOM" msgid "Parent IPN" msgstr "IPN del padre" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "IPN de la parte" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Precio mínimo" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Precio máximo" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "Orden de compra entrante" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "Orden de venta saliente" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "Válido" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "Validación de Lista de Materiales" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "Esta opción debe ser seleccionada" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Ubicación Predeterminada" @@ -5691,380 +5900,375 @@ msgstr "Ubicación Predeterminada" msgid "Total Stock" msgstr "Inventario Total" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "Stock Disponible" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "Cantidad de entrada para el cálculo del precio" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Categoría de parte" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "Categorías de parte" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "Ubicación predeterminada para partes de esta categoría" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Estructural" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Las partes no pueden asignarse directamente a una categoría estructural, pero pueden asignarse a categorías hijas." -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "Palabras clave predeterminadas" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "Palabras clave por defecto para partes en esta categoría" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Icono" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "Icono (opcional)" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "¡No puedes hacer que esta categoría de partes sea estructural porque algunas partes ya están asignadas!" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "Opción no válida para la parte principal" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "Ya existe un artículo de almacén con este número de serie" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "IPN duplicado no permitido en la configuración de partes" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "Parte con este nombre, IPN y revisión ya existe." -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "¡No se pueden asignar partes a las categorías de partes estructurales!" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "Nombre de la parte" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "Es plantilla" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "¿Es esta parte una parte de la plantilla?" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "¿Es esta parte una variante de otra parte?" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "Descripción de parte (opcional)" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "Palabras clave para mejorar la visibilidad en los resultados de búsqueda" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "Categoría" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "Categoría de parte" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "Número de parte interna" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "Revisión de parte o número de versión" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "¿Dónde se almacena este artículo normalmente?" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Proveedor por defecto" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "Parte de proveedor predeterminada" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "Expiración por defecto" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "Tiempo de expiración (en días) para los artículos de stock de esta parte" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "Nivel mínimo de stock permitido" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "Unidades de medida para esta parte" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "¿Se puede construir esta parte a partir de otras partes?" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "¿Se puede utilizar esta parte para construir otras partes?" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "¿Esta parte tiene seguimiento de objetos únicos?" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "¿Se puede comprar esta parte a proveedores externos?" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "¿Se puede vender esta parte a los clientes?" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "¿Está activa esta parte?" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "¿Es ésta una parte virtual, como un producto de software o una licencia?" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "Suma de verificación de BOM" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "Suma de verificación de BOM almacenada" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "BOM comprobado por" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "Fecha BOM comprobada" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "Creación de Usuario" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Último inventario" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "Vender múltiples" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "Moneda utilizada para almacenar en caché los cálculos de precios" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "Costo mínimo de BOM" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "Costo mínimo de partes de componentes" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "Costo máximo de BOM" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "Costo máximo de partes de componentes" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "Costo mínimo de compra" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "Costo histórico mínimo de compra" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "Costo máximo de compra" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "Costo histórico máximo de compra" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "Precio interno mínimo" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "Costo mínimo basado en precios reducidos internos" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "Precio interno máximo" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "Costo máximo basado en precios reducidos internos" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "Precio mínimo de proveedor" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "Precio mínimo de la parte de proveedores externos" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "Precio máximo de proveedor" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "Precio máximo de la parte de proveedores externos" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "Costo mínimo de variante" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "Costo mínimo calculado de las partes variantes" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "Costo máximo de variante" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "Costo máximo calculado de las partes variantes" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "Anular el costo mínimo" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "Costo mínimo general calculado" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "Precio de venta mínimo" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "Precio de venta mínimo basado en precios reducidos" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "Precio de venta máximo" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "Precio de venta máximo basado en precios reducidos" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "Costo de venta mínimo" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "Precio de venta mínimo histórico" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "Costo de Venta Máximo" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "Número de artículos" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6076,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "Fecha" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "Notas adicionales" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "Costo de Stock Mínimo" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "Costo mínimo estimado del stock disponible" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Informe" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Número de partes" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "Las plantillas de prueba sólo pueden ser creadas para partes rastreables" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "Ya existe una prueba con este nombre para esta parte" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "Nombre de prueba" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "Introduzca un nombre para la prueba" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "Descripción de prueba" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "Introduce la descripción para esta prueba" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Requerido" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "¿Es necesario pasar esta prueba?" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "Requiere valor" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "¿Esta prueba requiere un valor al agregar un resultado de la prueba?" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "Adjunto obligatorio" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "¿Esta prueba requiere un archivo adjunto al agregar un resultado de la prueba?" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "El nombre de parámetro en la plantilla tiene que ser único" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "Nombre de Parámetro" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "Casilla de verificación" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "¿Es este parámetro una casilla de verificación?" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "Opciones" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "Opciones válidas para este parámetro (separados por comas)" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "Opción inválida para el valor del parámetro" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "Parte principal" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Plantilla de parámetro" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "Datos" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "Valor del parámetro" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Valor predeterminado" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "Valor de parámetro por defecto" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "ID de parte o nombre de parte" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "Valor de ID de parte única" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "Valor IPN de parte" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "Nivel" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "Nivel de BOM" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "Item de Lista de Materiales" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "Seleccionar parte principal" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "Sub parte" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "Seleccionar parte a utilizar en BOM" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "Cantidad del artículo en BOM" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "Este artículo BOM es opcional" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "Este artículo de BOM es consumible (no está rastreado en órdenes de construcción)" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Exceso" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Cantidad estimada de desperdicio de construcción (absoluta o porcentaje)" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "Referencia de artículo de BOM" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "Notas del artículo de BOM" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "Suma de verificación" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "Suma de verificación de línea de BOM" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Validado" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "Este artículo de BOM ha sido validado" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Este artículo BOM es heredado por BOMs para partes variantes" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Permitir variantes" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Artículos de stock para partes variantes pueden ser usados para este artículo BOM" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "La cantidad debe ser un valor entero para las partes rastreables" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "Debe especificar la subparte" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "Ítem de BOM sustituto" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "La parte sustituta no puede ser la misma que la parte principal" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "Artículo BOM superior" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "Sustituir parte" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "Parte 1" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "Parte 2" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "Seleccionar parte relacionada" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "Moneda de compra de ítem de stock" @@ -6487,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Duplicar Parte" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Stock Inicial" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "Crear Parte con cantidad inicial de stock" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "Información del proveedor" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "Añadir información inicial del proveedor para esta parte" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "Copiar Parámetros de Categoría" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "Copiar plantillas de parámetro de la categoría de partes seleccionada" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "Imagen Existente" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "El archivo de imagen no existe" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "Generar informe" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "Actualizar partes" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "Anular el valor calculado para precio mínimo" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "Precio mínimo de moneda" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "Precio máximo de moneda" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "Actualizar" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "El precio mínimo no debe ser mayor que el precio máximo" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "El precio máximo no debe ser inferior al precio mínimo" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "Seleccionar parte de la que copiar BOM" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "Eliminar Datos Existentes" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "Eliminar artículos BOM existentes antes de copiar" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "Incluye Heredado" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "Incluye artículos BOM que son heredados de partes con plantillas" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "Omitir filas no válidas" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "Activar esta opción para omitir filas inválidas" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "Copiar partes sustitutas" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "Limpiar BOM Existente" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "Varios resultados encontrados" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "No se encontraron partes coincidentes" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "La parte no está designada como componente" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "Cantidad no proporcionada" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "Cantidad no válida" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "Se requiere al menos un artículo BOM" @@ -6838,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -6940,15 +7140,15 @@ msgstr "Fabricantes de partes" #: part/templates/part/detail.html:659 msgid "Related Part" -msgstr "Partes relacionadas" +msgstr "" #: part/templates/part/detail.html:667 msgid "Add Related Part" -msgstr "Añadir artículos relacionados" +msgstr "" #: part/templates/part/detail.html:752 msgid "Add Test Result Template" -msgstr "Añadir plantilla de resultados de prueba" +msgstr "" #: part/templates/part/import_wizard/ajax_part_upload.html:29 #: part/templates/part/import_wizard/part_upload.html:14 @@ -7124,19 +7324,15 @@ msgstr "Buscar número de serie" #: part/templates/part/part_base.html:444 msgid "Part QR Code" -msgstr "Código QR de Parte" +msgstr "" #: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "parte" - #: part/templates/part/part_base.html:512 msgid "Calculate" -msgstr "Calcular" +msgstr "" #: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" @@ -7144,11 +7340,11 @@ msgstr "" #: part/templates/part/part_base.html:580 msgid "No matching images found" -msgstr "No se encontraron imágenes coincidentes" +msgstr "" #: part/templates/part/part_base.html:676 msgid "Hide Part Details" -msgstr "Ocultar Detalles de la Parte" +msgstr "" #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:76 #: part/templates/part/prices.html:227 templates/js/translated/pricing.js:485 @@ -7248,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "Editar" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7402,11 +7598,15 @@ msgstr "Imagen de parte no encontrada" msgid "Part Pricing" msgstr "Precio de parte" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "No se especificó ninguna acción" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "No se encontró ninguna acción coincidente" @@ -7464,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7563,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "Impresión de etiquetas fallida" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "Códigos de barras de InvenTree" @@ -7575,6 +7787,7 @@ msgstr "Proporciona soporte nativo para códigos de barras" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7643,6 +7856,22 @@ msgstr "Modo de depuración" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "Activar modo de depuración - devuelve código HTML en lugar de PDF" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7663,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7735,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" +msgstr "" + +#: plugin/models.py:30 msgid "Plugin Configuration" msgstr "Configuración del complemento" -#: plugin/models.py:30 +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "Configuraciones del Plug-in" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "Clave" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "Clave del complemento" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "Nombre del complemento" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "Nombre de Paquete" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "Está activo el complemento" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "Instalado" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "Complemento de ejemplo" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "Complemento integrado" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Complemento" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "Método" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "No se encontró autor" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "El complemento '{p}' no es compatible con la versión actual de InvenTree {v}" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "El complemento requiere al menos la versión {v}" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "El complemento requiere como máximo la versión {v}" @@ -7857,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "URL de origen" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Fuente del paquete - puede ser un registro personalizado o una ruta VCS" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "Nombre de Paquete" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Nombre del paquete Plug-in - también puede contener un indicador de versión" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "Versión" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "Confirmar instalación del complemento" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Esto instalará este plug-in en la instancia actual. La instancia entrará en mantenimiento." -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "Instalación no confirmada" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "Debe proporcionar cualquier nombre de paquete de la URL" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "Activar complemento" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "Activar este complemento" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "No se han proporcionado objetos válidos a la plantilla" @@ -7950,103 +8221,103 @@ msgstr "Legal" msgid "Letter" msgstr "Carta" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "Nombre de la plantilla" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "Plantilla de informe" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "Descripción de la plantilla de informe" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "Número de revisión del informe (autoincremental)" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "Tamaño de página para reportes PDF" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "Patrón para generar nombres de archivo" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "Plantilla de informe está habilitada" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Filtros de consulta de Stock (lista separada por comas de pares clave=valor)" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "Incluye Pruebas Instaladas" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "Incluye resultados de prueba para artículos de stock instalados dentro del artículo ensamblado" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "Crear filtros" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Crear filtros de consulta (lista separada por comas de pares clave=valor" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "Filtros de partes" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Filtros de búsqueda de partes (lista separada por comas de pares clave=valor" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "Filtros de búsqueda de orden de compra" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "Filtros de búsqueda de pedidos de ventas" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "Filtros de búsqueda de orden de devolución" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "Fragmento" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "Archivo fragmento de informe" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "Descripción de archivo de fragmento" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "Activo" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "Reportar archivo de activos" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "Descripción del archivo de activos" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8087,9 +8358,9 @@ msgstr "Total" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8113,12 +8384,12 @@ msgid "Test Results" msgstr "Resultados de la Prueba" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "Prueba" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "Resultado" @@ -8144,32 +8415,32 @@ msgid "Installed Items" msgstr "Elementos instalados" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Serial" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "ID de Ubicación" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "Nombre de localización" @@ -8178,56 +8449,56 @@ msgstr "Nombre de localización" msgid "Location Path" msgstr "Ruta de Ubicación" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "ID del artículo de almacén" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "Código de estado" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "ID Parte del Proveedor" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "ID de proveedor" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "Nombre del proveedor" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "ID de cliente" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Instalado en" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "ID de construcción" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "ID de orden de venta" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "ID de orden de compra" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "Revisión necesaria" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8237,56 +8508,56 @@ msgstr "Fecha de Expiración" msgid "External Location" msgstr "Ubicación externa" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Desactualizado" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "Cantidad requerida" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "Debe suministrarse una parte válida" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8298,12 +8569,12 @@ msgstr "Ubicación de Stock" msgid "Stock Locations" msgstr "Ubicaciones de Stock" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Propietario" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "Seleccionar Propietario" @@ -8333,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "La cantidad debe ser 1 para el artículo con un número de serie" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Número de serie no se puede establecer si la cantidad es mayor que 1" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "El objeto no puede pertenecer a sí mismo" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "El artículo debe tener una referencia de construcción si is_building=True" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "La referencia de la construcción no apunta al mismo objeto de parte" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "Artículo de stock padre" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "Parte base" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "Seleccione una parte del proveedor correspondiente para este artículo de stock" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "¿Dónde se encuentra este artículo de stock?" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "Empaquetar este artículo de stock se almacena en" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "¿Está este artículo instalado en otro artículo?" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "Número de serie para este artículo" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "Código de lote para este artículo de stock" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "Cantidad de Stock" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "Build de origen" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "Build para este item de stock" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "Consumido por" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "Orden de compra de origen" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "Orden de compra para este artículo de stock" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "Orden de venta de destino" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Fecha de caducidad del artículo de stock. El stock se considerará caducado después de esta fecha" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "Eliminar al agotar" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "Eliminar este artículo de stock cuando se agoten las existencias" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "Precio de compra único en el momento de la compra" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "Convertido a parte" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "La parte no está establecida como rastreable" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "Cantidad debe ser un entero" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "Los números de serie deben ser una lista de enteros" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "La cantidad no coincide con los números de serie" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "Números de serie ya existen" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "Artículo de stock ha sido asignado a un pedido de venta" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "Artículo de stock está instalado en otro artículo" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "Artículo de stock contiene otros artículos" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "Artículo de stock ha sido asignado a un cliente" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "El artículo de stock está en producción" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "Stock serializado no puede ser combinado" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "Artículos de Stock Duplicados" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "Los artículos de stock deben referirse a la misma parte" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "Los artículos de stock deben referirse a la misma parte del proveedor" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "Los códigos de estado del stock deben coincidir" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "Stock no se puede mover porque no está en stock" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "Notas de entrada" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "Debe proporcionarse un valor para esta prueba" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "El archivo adjunto debe ser subido para esta prueba" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "Nombre del test" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "Resultado de la prueba" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "Valor de salida de prueba" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "Adjunto de resultados de prueba" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "Notas de prueba" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "El número de serie es demasiado grande" @@ -8559,157 +8830,161 @@ msgstr "El número de serie es demasiado grande" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "Introduzca el número de artículos de stock para serializar" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "La cantidad no debe exceder la cantidad disponible de stock ({q})" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "Introduzca números de serie para nuevos artículos" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "Ubicación de stock de destino" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "Campo de nota opcional" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "Los números de serie no se pueden asignar a esta parte" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "Añadir nota de transacción (opcional)" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "La parte debe ser vendible" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "El artículo está asignado a una orden de venta" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "El artículo está asignado a una orden de creación" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "Cliente para asignar artículos de stock" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "La empresa seleccionada no es un cliente" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "Notas de asignación de stock" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "Debe proporcionarse una lista de artículos de stock" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "Notas de fusión de stock" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "Permitir proveedores no coincidentes" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "Permitir fusionar artículos de stock con diferentes partes de proveedor" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "Permitir estado no coincidente" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "Permitir fusionar artículos de stock con diferentes códigos de estado" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "Debe proporcionar al menos dos artículos de stock" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "Valor de clave primaria de Stock" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "Notas de transacción de stock" @@ -8760,7 +9035,7 @@ msgstr "" #: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" -msgstr "Añadir Resultado de Prueba" +msgstr "" #: stock/templates/stock/item_base.html:33 msgid "Locate stock item" @@ -8846,7 +9121,7 @@ msgid "Delete stock item" msgstr "Eliminar artículo de stock" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Construcción o Armado" @@ -8912,7 +9187,7 @@ msgid "Available Quantity" msgstr "Cantidad disponible" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "Ubicación no establecida" @@ -8946,19 +9221,19 @@ msgstr "Ningún inventario realizado" #: stock/templates/stock/item_base.html:507 #: templates/js/translated/stock.js:1922 msgid "stock item" -msgstr "artículo de stock" +msgstr "" #: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" -msgstr "Editar Estado del Stock" +msgstr "" #: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" -msgstr "Código QR de Item de Stock" +msgstr "" #: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" -msgstr "Enlazar código de barras al artículo de stock" +msgstr "" #: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." @@ -8974,11 +9249,11 @@ msgstr "Esta acción no se puede deshacer fácilmente" #: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" -msgstr "Convertir artículo de stock" +msgstr "" #: stock/templates/stock/item_base.html:662 msgid "Return to Stock" -msgstr "Volver a Stock" +msgstr "" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." @@ -9057,7 +9332,7 @@ msgstr "Nueva Ubicación" #: stock/templates/stock/location.html:289 #: templates/js/translated/stock.js:2543 msgid "stock location" -msgstr "ubicación de almacén" +msgstr "" #: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" @@ -9143,71 +9418,71 @@ msgstr "Índice" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "Partes Suscritas" +msgstr "" #: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "Categorías Suscritas" +msgstr "" #: templates/InvenTree/index.html:62 msgid "Latest Parts" -msgstr "Últimas Partes" +msgstr "" #: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" -msgstr "Validación de BOM en espera" +msgstr "" #: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "Actualizado Recientemente" +msgstr "" #: templates/InvenTree/index.html:134 msgid "Depleted Stock" -msgstr "Stock Agotado" +msgstr "" #: templates/InvenTree/index.html:148 msgid "Required for Build Orders" -msgstr "Requerido para construir pedidos" +msgstr "" #: templates/InvenTree/index.html:156 msgid "Expired Stock" -msgstr "Stock Caducado" +msgstr "" #: templates/InvenTree/index.html:172 msgid "Stale Stock" -msgstr "Stock Obsoleto" +msgstr "" #: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "Pedidos en curso" +msgstr "" #: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "Órdenes de construcción atrasadas" +msgstr "" #: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" -msgstr "Órdenes de Compra Pendientes" +msgstr "" #: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" -msgstr "Pedidos de Compra Atrasados" +msgstr "" #: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" -msgstr "Pedidos de Venta Pendientes" +msgstr "" #: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" -msgstr "Pedidos de Venta Atrasados" +msgstr "" #: templates/InvenTree/index.html:299 msgid "InvenTree News" -msgstr "Novedades de InvenTree" +msgstr "" #: templates/InvenTree/index.html:301 msgid "Current News" -msgstr "Últimas novedades" +msgstr "" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" @@ -9237,11 +9512,11 @@ msgstr "Notificaciones" #: templates/InvenTree/notifications/notifications.html:38 msgid "No unread notifications found" -msgstr "No se encontraron notificaciones sin leer" +msgstr "" #: templates/InvenTree/notifications/notifications.html:58 msgid "No notification history found" -msgstr "No se encontró historial de notificaciones" +msgstr "" #: templates/InvenTree/notifications/notifications.html:65 msgid "Delete all read notifications" @@ -9250,7 +9525,7 @@ msgstr "Borrar todas las notificaciones leídas" #: templates/InvenTree/notifications/notifications.html:89 #: templates/js/translated/notification.js:85 msgid "Delete Notification" -msgstr "Eliminar notificación" +msgstr "" #: templates/InvenTree/notifications/sidebar.html:8 msgid "Inbox" @@ -9413,11 +9688,6 @@ msgstr "Mensaje" msgid "Plugin information" msgstr "Información de Plugin" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "Versión" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "no se proporcionó información de versión" @@ -9546,7 +9816,7 @@ msgstr "Editar ajustes" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" -msgstr "Editar Configuración del Plugin" +msgstr "" #: templates/InvenTree/settings/settings_js.html:60 msgid "Edit Notification Setting" @@ -9554,20 +9824,20 @@ msgstr "" #: templates/InvenTree/settings/settings_js.html:63 msgid "Edit Global Setting" -msgstr "Editar Configuración Global" +msgstr "" #: templates/InvenTree/settings/settings_js.html:65 msgid "Edit User Setting" -msgstr "Editar Configuración de Usuario" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:49 msgid "Rate" -msgstr "Tarifa" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Eliminar" @@ -9588,9 +9858,9 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" -msgstr "grupo" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:175 #: templates/InvenTree/settings/settings_staff_js.html:189 @@ -9604,17 +9874,17 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:285 msgid "No category parameter templates found" -msgstr "No hay plantillas de parámetros de categoría" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 #: templates/js/translated/part.js:1645 msgid "Edit Template" -msgstr "Editar Plantilla" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 #: templates/js/translated/part.js:1646 msgid "Delete Template" -msgstr "Eliminar Plantilla" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:326 msgid "Edit Category Parameter Template" @@ -9622,15 +9892,15 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:353 msgid "Delete Category Parameter Template" -msgstr "Eliminar plantilla de parámetro de categoría" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:388 msgid "Create Category Parameter Template" -msgstr "Crear plantilla de parámetro de categoría" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:418 msgid "Create Part Parameter Template" -msgstr "Crear plantilla Parámetro de Parte" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:440 msgid "No stock location types found" @@ -9638,7 +9908,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:461 msgid "Location count" -msgstr "Cantidad de ubicaciones" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:466 #: templates/InvenTree/settings/settings_staff_js.html:480 @@ -9854,7 +10124,7 @@ msgstr "%(time)s atrás" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "¿Realmente desea eliminar la dirección de correo electrónico seleccionada?" +msgstr "" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" @@ -10044,7 +10314,7 @@ msgstr "¿No es un miembro?" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "Registrarse" @@ -10124,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10253,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "Las siguientes partes están bajas en stock requerido" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "Cantidad requerida" @@ -10273,59 +10543,59 @@ msgstr "Cantidad Mínima" #: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" -msgstr "Sin Respuesta" +msgstr "" #: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" -msgstr "No hay respuesta del servidor InvenTree" +msgstr "" #: templates/js/translated/api.js:232 msgid "Error 400: Bad request" -msgstr "Error 400: Solicitud incorrecta" +msgstr "" #: templates/js/translated/api.js:233 msgid "API request returned error code 400" -msgstr "La solicitud API devolvió el código de error 400" +msgstr "" #: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" -msgstr "Error 401: No autenticado" +msgstr "" #: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" -msgstr "Credenciales de autenticación no suministradas" +msgstr "" #: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" -msgstr "Error 403: Permiso Denegado" +msgstr "" #: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "No tiene los permisos necesarios para acceder a esta función" +msgstr "" #: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" -msgstr "Error 404: Recurso No Encontrado" +msgstr "" #: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" -msgstr "El recurso solicitado no se pudo encontrar en el servidor" +msgstr "" #: templates/js/translated/api.js:252 msgid "Error 405: Method Not Allowed" -msgstr "Error 405: Método no Permitido" +msgstr "" #: templates/js/translated/api.js:253 msgid "HTTP method not allowed at URL" -msgstr "Método HTTP no permitido en URL" +msgstr "" #: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "Error 408: Tiempo de espera agotado" +msgstr "" #: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" -msgstr "Tiempo de espera de conexión agotado al solicitar datos del servidor" +msgstr "" #: templates/js/translated/api.js:261 msgid "Error 503: Service Unavailable" @@ -10337,11 +10607,11 @@ msgstr "" #: templates/js/translated/api.js:265 msgid "Unhandled Error Code" -msgstr "Código de error no controlado" +msgstr "" #: templates/js/translated/api.js:266 msgid "Error code" -msgstr "Código de error" +msgstr "" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" @@ -10361,23 +10631,23 @@ msgstr "" #: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "No se encontraron archivos adjuntos" +msgstr "" #: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "Editar archivos adjuntos" +msgstr "" #: templates/js/translated/attachment.js:346 msgid "Upload Date" -msgstr "Fecha de subida" +msgstr "" #: templates/js/translated/attachment.js:366 msgid "Edit attachment" -msgstr "Editar adjunto" +msgstr "" #: templates/js/translated/attachment.js:374 msgid "Delete attachment" -msgstr "Eliminar adjunto" +msgstr "" #: templates/js/translated/barcode.js:43 msgid "Scan barcode data here using barcode scanner" @@ -10385,32 +10655,32 @@ msgstr "" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "Introduzca datos de código de barras" +msgstr "" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" -msgstr "Escanear código de barras usando webcam conectada" +msgstr "" #: templates/js/translated/barcode.js:138 msgid "Enter optional notes for stock transfer" -msgstr "Introduzca notas opcionales para la transferencia de stock" +msgstr "" #: templates/js/translated/barcode.js:139 msgid "Enter notes" -msgstr "Escribir notas" +msgstr "" #: templates/js/translated/barcode.js:188 msgid "Server error" -msgstr "Error del servidor" +msgstr "" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" -msgstr "Respuesta desconocida del servidor" +msgstr "" #: templates/js/translated/barcode.js:252 #: templates/js/translated/modals.js:1120 msgid "Invalid server response" -msgstr "Respuesta del servidor inválida" +msgstr "" #: templates/js/translated/barcode.js:372 msgid "Scan barcode data" @@ -10422,7 +10692,7 @@ msgstr "Escanear código de barras" #: templates/js/translated/barcode.js:458 msgid "No URL in response" -msgstr "No hay URL en respuesta" +msgstr "" #: templates/js/translated/barcode.js:498 msgid "This will remove the link to the associated barcode" @@ -10430,11 +10700,11 @@ msgstr "" #: templates/js/translated/barcode.js:504 msgid "Unlink" -msgstr "Desvincular" +msgstr "" #: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 msgid "Remove stock item" -msgstr "Eliminar artículo de stock" +msgstr "" #: templates/js/translated/barcode.js:610 msgid "Scan Stock Items Into Location" @@ -10447,7 +10717,7 @@ msgstr "" #: templates/js/translated/barcode.js:615 #: templates/js/translated/barcode.js:812 msgid "Check In" -msgstr "Registrar" +msgstr "" #: templates/js/translated/barcode.js:647 msgid "No barcode provided" @@ -10455,15 +10725,15 @@ msgstr "" #: templates/js/translated/barcode.js:687 msgid "Stock Item already scanned" -msgstr "Artículo de stock ya escaneado" +msgstr "" #: templates/js/translated/barcode.js:691 msgid "Stock Item already in this location" -msgstr "Artículo de stock ya está en esta ubicación" +msgstr "" #: templates/js/translated/barcode.js:698 msgid "Added stock item" -msgstr "Artículo de stock añadido" +msgstr "" #: templates/js/translated/barcode.js:707 msgid "Barcode does not match valid stock item" @@ -10483,24 +10753,24 @@ msgstr "" #: templates/js/translated/barcode.js:806 msgid "Check Into Location" -msgstr "Comprobar en la ubicación" +msgstr "" #: templates/js/translated/barcode.js:875 #: templates/js/translated/barcode.js:884 msgid "Barcode does not match a valid location" -msgstr "El código de barras no coincide con una ubicación válida" +msgstr "" #: templates/js/translated/bom.js:78 msgid "Create BOM Item" -msgstr "Crear artículo para el BOM" +msgstr "" #: templates/js/translated/bom.js:132 msgid "Display row data" -msgstr "Mostrar datos de fila" +msgstr "" #: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "Datos de Fila" +msgstr "" #: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 #: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 @@ -10512,7 +10782,7 @@ msgstr "Cerrar" #: templates/js/translated/bom.js:306 msgid "Download BOM Template" -msgstr "Descargar plantilla BOM" +msgstr "" #: templates/js/translated/bom.js:351 msgid "Multi Level BOM" @@ -10524,15 +10794,15 @@ msgstr "" #: templates/js/translated/bom.js:357 msgid "Levels" -msgstr "Niveles" +msgstr "" #: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "Seleccione el número máximo de niveles BOM a exportar (0 = todos los niveles)" +msgstr "" #: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" -msgstr "Incluye partes alternativas" +msgstr "" #: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" @@ -10540,7 +10810,7 @@ msgstr "" #: templates/js/translated/bom.js:371 msgid "Include Parameter Data" -msgstr "Incluye Parámetros de Datos" +msgstr "" #: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" @@ -10548,27 +10818,27 @@ msgstr "" #: templates/js/translated/bom.js:377 msgid "Include Stock Data" -msgstr "Incluye Datos de Stock" +msgstr "" #: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" -msgstr "Incluye datos de stock de partes en BOM exportado" +msgstr "" #: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" -msgstr "Incluir Datos del fabricante" +msgstr "" #: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" -msgstr "Incluye datos del fabricante de partes en BOM exportado" +msgstr "" #: templates/js/translated/bom.js:389 msgid "Include Supplier Data" -msgstr "Incluir Datos del Proveedor" +msgstr "" #: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" -msgstr "Incluye datos del proveedor de partes en BOM exportado" +msgstr "" #: templates/js/translated/bom.js:395 msgid "Include Pricing Data" @@ -10580,35 +10850,35 @@ msgstr "" #: templates/js/translated/bom.js:591 msgid "Remove substitute part" -msgstr "Eliminar parte sustituta" +msgstr "" #: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" -msgstr "Seleccione y añada una nueva parte sustituta usando la siguiente entrada" +msgstr "" #: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" -msgstr "¿Está seguro que desea eliminar este enlace de la parte sustituta?" +msgstr "" #: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" -msgstr "Eliminar parte sustituta" +msgstr "" #: templates/js/translated/bom.js:701 msgid "Add Substitute" -msgstr "Añadir sustituto" +msgstr "" #: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" -msgstr "Editar sustitutos de artículos BOM" +msgstr "" #: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" -msgstr "Todos los artículos BOM seleccionados serán eliminados" +msgstr "" #: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" -msgstr "¿Eliminar artículos BOM seleccionados?" +msgstr "" #: templates/js/translated/bom.js:826 msgid "Delete items" @@ -10620,15 +10890,15 @@ msgstr "" #: templates/js/translated/bom.js:946 msgid "Substitutes Available" -msgstr "Sustitutos Disponibles" +msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" -msgstr "Stock de variante permitido" +msgstr "" #: templates/js/translated/bom.js:1014 msgid "Substitutes" -msgstr "Sustitutos" +msgstr "" #: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" @@ -10642,580 +10912,580 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" #: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" -msgstr "Validar Artículo para el BOM" +msgstr "" #: templates/js/translated/bom.js:1281 msgid "This line has been validated" -msgstr "Esta línea ha sido validada" +msgstr "" #: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" -msgstr "Editar partes sustitutas" +msgstr "" #: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" -msgstr "Editar Artículo de BOM" +msgstr "" #: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" -msgstr "Eliminar Artículo de BOM" +msgstr "" #: templates/js/translated/bom.js:1307 msgid "View BOM" -msgstr "Ver BOM" +msgstr "" #: templates/js/translated/bom.js:1391 msgid "No BOM items found" -msgstr "No se encontraron artículos BOM" +msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" -msgstr "Parte requerida" +msgstr "" #: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" -msgstr "Heredado de BOM superior" +msgstr "" #: templates/js/translated/build.js:142 msgid "Edit Build Order" -msgstr "Editar Orden de Trabajo" +msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" -msgstr "Crear Orden de Trabajo" +msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" -msgstr "¿Estás seguro de que quieres cancelar esta construcción?" +msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" -msgstr "El pedido de construcción está listo para ser completado" - -#: templates/js/translated/build.js:299 -msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" #: templates/js/translated/build.js:304 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "" + +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" -msgstr "Orden de construcción incompleta" +msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" -msgstr "Completar Orden de Construcción" +msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" -msgstr "Siguiente número de serie disponible" +msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "Último número de serie" +msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" -msgstr "La ley de materiales contiene partes rastreables" +msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" -msgstr "Las salidas de construcción deben ser generadas individualmente" +msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" -msgstr "Las partes rastreables pueden tener números de serie especificados" +msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "Introduzca números de serie para generar múltiples salidas de construcción única" +msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" -msgstr "Crear Salida de Trabajo" +msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" -msgstr "Asignar artículos de stock a esta salida de trabajo" +msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" -msgstr "Completar salida de trabajo" +msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" -msgstr "Eliminar Salida de Trabajo" +msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" -msgstr "Seleccionar Salida de Trabajo" +msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" -msgstr "Se debe seleccionar al menos una salida de trabajo" +msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" -msgstr "Salida" +msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" -msgstr "Completar salidas de trabajo" +msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" -msgstr "Eliminar Salidas" +msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" -msgstr "No se encontraron asignaciones de órdenes de trabajo" +msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" -msgstr "Ubicación no especificada" +msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" -msgstr "Completar salidas" +msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" -msgstr "Eliminar salidas" - -#: templates/js/translated/build.js:1110 -msgid "build output" -msgstr "" - -#: templates/js/translated/build.js:1111 -msgid "build outputs" msgstr "" #: templates/js/translated/build.js:1115 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1116 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" -msgstr "No se encontraron salidas de trabajo activas" +msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "Seleccionar partes" +msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" -msgstr "Debe seleccionar al menos una parte para asignar" +msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" -msgstr "Especificar la cantidad de asignación de stock" +msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" -msgstr "Seleccionar ubicación de origen (dejar en blanco para tomar de todas las ubicaciones)" +msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" -msgstr "Asignar Artículos de Stock a Orden de Trabajo" +msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" -msgstr "No hay ubicaciones de stock coincidentes" +msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" -msgstr "No hay artículos de stock coincidentes" +msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "Los artículos de almacén se asignarán automáticamente a este pedido de construcción, de acuerdo con las pautas proporcionadas" +msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" -msgstr "Asignar artículos de inventario" +msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" -msgstr "No hay trabajos que coincidan con la consulta" +msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" -msgstr "Seleccionar" +msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" -msgstr "Orden de trabajo atrasada" +msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" -msgstr "Progreso" +msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" -msgstr "No hay información de usuario" +msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" -msgstr "Editar asignación de stock" +msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" -msgstr "Eliminar asignación de stock" +msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" -msgstr "Editar Asignación" +msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" -msgstr "Quitar asignación" +msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" -msgstr "Parte Rastreable" +msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" -msgstr "Stock de Trabajo" +msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" -msgstr "Pedido de stock" +msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" -msgstr "Asignar stock" +msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" #: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "Agregar Fabricante" +msgstr "" #: templates/js/translated/company.js:111 #: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "Añadir Parte del fabricante" +msgstr "" #: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "Editar Parte del Fabricante" +msgstr "" #: templates/js/translated/company.js:201 #: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "Añadir Proveedor" +msgstr "" #: templates/js/translated/company.js:243 #: templates/js/translated/purchase_order.js:352 msgid "Add Supplier Part" -msgstr "Añadir Parte de Proveedor" +msgstr "" #: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" -msgstr "Se eliminarán todas las partes del proveedor seleccionadas" +msgstr "" #: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" -msgstr "Eliminar partes de proveedor" +msgstr "" #: templates/js/translated/company.js:465 msgid "Add new Company" -msgstr "Añadir nueva Empresa" +msgstr "" #: templates/js/translated/company.js:536 msgid "Parts Supplied" -msgstr "Partes Suministradas" +msgstr "" #: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "Partes Fabricadas" +msgstr "" #: templates/js/translated/company.js:560 msgid "No company information found" -msgstr "No se encontró información de la empresa" +msgstr "" #: templates/js/translated/company.js:609 msgid "Create New Contact" -msgstr "Crear nuevo contacto" +msgstr "" #: templates/js/translated/company.js:625 #: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "Editar contacto" +msgstr "" #: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" -msgstr "Todos los contactos seleccionados serán eliminados" +msgstr "" #: templates/js/translated/company.js:668 #: templates/js/translated/company.js:732 msgid "Role" -msgstr "Cargo" +msgstr "" #: templates/js/translated/company.js:676 msgid "Delete Contacts" -msgstr "Eliminar contactos" +msgstr "" #: templates/js/translated/company.js:707 msgid "No contacts found" -msgstr "No se encontró ningún contacto" +msgstr "" #: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "Número de teléfono" +msgstr "" #: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "Dirección de correo electrónico" +msgstr "" #: templates/js/translated/company.js:752 msgid "Delete Contact" -msgstr "Eliminar contacto" +msgstr "" #: templates/js/translated/company.js:849 msgid "Create New Address" -msgstr "Crear nueva dirección" +msgstr "" #: templates/js/translated/company.js:864 #: templates/js/translated/company.js:1025 msgid "Edit Address" -msgstr "Editar dirección" +msgstr "" #: templates/js/translated/company.js:899 msgid "All selected addresses will be deleted" -msgstr "Todos las direcciones seleccionadas serán eliminadas" +msgstr "" #: templates/js/translated/company.js:913 msgid "Delete Addresses" -msgstr "Eliminar direcciones" +msgstr "" #: templates/js/translated/company.js:940 msgid "No addresses found" -msgstr "No se encontraron direcciones" +msgstr "" #: templates/js/translated/company.js:979 msgid "Postal city" -msgstr "Ciudad postal" +msgstr "" #: templates/js/translated/company.js:985 msgid "State/province" -msgstr "Estado/provincia" +msgstr "" #: templates/js/translated/company.js:997 msgid "Courier notes" -msgstr "Notas del mensajero" +msgstr "" #: templates/js/translated/company.js:1003 msgid "Internal notes" -msgstr "Notas internas" +msgstr "" #: templates/js/translated/company.js:1029 msgid "Delete Address" -msgstr "Eliminar dirección" +msgstr "" #: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" -msgstr "Se eliminarán todas las partes del fabricante seleccionadas" +msgstr "" #: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" -msgstr "Eliminar Partes del Fabricante" +msgstr "" #: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" -msgstr "Todos los parámetros seleccionados serán eliminados" +msgstr "" #: templates/js/translated/company.js:1165 msgid "Delete Parameters" -msgstr "Eliminar parámetros" +msgstr "" #: templates/js/translated/company.js:1181 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 msgid "Order parts" -msgstr "Partes de pedido" +msgstr "" #: templates/js/translated/company.js:1198 msgid "Delete manufacturer parts" -msgstr "Eliminar partes del fabricante" +msgstr "" #: templates/js/translated/company.js:1230 msgid "Manufacturer part actions" @@ -11223,160 +11493,160 @@ msgstr "" #: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" -msgstr "No se encontraron partes del fabricante" +msgstr "" #: templates/js/translated/company.js:1269 #: templates/js/translated/company.js:1557 templates/js/translated/part.js:798 #: templates/js/translated/part.js:1210 msgid "Template part" -msgstr "Plantilla de parte" +msgstr "" #: templates/js/translated/company.js:1273 #: templates/js/translated/company.js:1561 templates/js/translated/part.js:802 #: templates/js/translated/part.js:1214 msgid "Assembled part" -msgstr "Parte ensamblada" +msgstr "" #: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464 msgid "No parameters found" -msgstr "No se encontraron parámetros" +msgstr "" #: templates/js/translated/company.js:1428 templates/js/translated/part.js:1527 msgid "Edit parameter" -msgstr "Editar parámetro" +msgstr "" #: templates/js/translated/company.js:1429 templates/js/translated/part.js:1528 msgid "Delete parameter" -msgstr "Eliminar parámetro" +msgstr "" #: templates/js/translated/company.js:1446 templates/js/translated/part.js:1433 msgid "Edit Parameter" -msgstr "Editar parámetro" +msgstr "" #: templates/js/translated/company.js:1455 templates/js/translated/part.js:1549 msgid "Delete Parameter" -msgstr "Eliminar parámetro" +msgstr "" #: templates/js/translated/company.js:1486 msgid "Delete supplier parts" -msgstr "Eliminar partes del proveedor" +msgstr "" #: templates/js/translated/company.js:1536 msgid "No supplier parts found" -msgstr "No se encontraron partes de proveedor" +msgstr "" #: templates/js/translated/company.js:1654 msgid "Base Units" -msgstr "Unidades base" +msgstr "" #: templates/js/translated/company.js:1684 msgid "Availability" -msgstr "Disponibilidad" +msgstr "" #: templates/js/translated/company.js:1715 msgid "Edit supplier part" -msgstr "Editar proveedor" +msgstr "" #: templates/js/translated/company.js:1716 msgid "Delete supplier part" -msgstr "Eliminar ítem del proveedor" +msgstr "" #: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" -msgstr "Eliminar precio de descuento" +msgstr "" #: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" -msgstr "Editar precio de descuento" +msgstr "" #: templates/js/translated/company.js:1794 msgid "No price break information found" -msgstr "No se ha encontrado información de descuento de precios" +msgstr "" #: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "Última actualización" +msgstr "" #: templates/js/translated/company.js:1830 msgid "Edit price break" -msgstr "Editar precio de descuento" +msgstr "" #: templates/js/translated/company.js:1831 msgid "Delete price break" -msgstr "Eliminar precio de descuento" +msgstr "" #: templates/js/translated/filters.js:186 #: templates/js/translated/filters.js:672 msgid "true" -msgstr "verdadero" +msgstr "" #: templates/js/translated/filters.js:190 #: templates/js/translated/filters.js:673 msgid "false" -msgstr "falso" +msgstr "" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "Seleccionar filtro" +msgstr "" #: templates/js/translated/filters.js:437 msgid "Print Labels" -msgstr "Imprimir etiquetas" +msgstr "" #: templates/js/translated/filters.js:441 msgid "Print Reports" -msgstr "Imprimir informes" +msgstr "" #: templates/js/translated/filters.js:453 msgid "Download table data" -msgstr "Descargar tabla de datos" +msgstr "" #: templates/js/translated/filters.js:460 msgid "Reload table data" -msgstr "Recargar tabla de datos" +msgstr "" #: templates/js/translated/filters.js:469 msgid "Add new filter" -msgstr "Añadir un nuevo filtro" +msgstr "" #: templates/js/translated/filters.js:477 msgid "Clear all filters" -msgstr "Limpiar todos los filtros" +msgstr "" #: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "Crear filtro" +msgstr "" #: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 #: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" -msgstr "Acción Prohibida" +msgstr "" #: templates/js/translated/forms.js:376 msgid "Create operation not allowed" -msgstr "Operación de creación no permitida" +msgstr "" #: templates/js/translated/forms.js:391 msgid "Update operation not allowed" -msgstr "Operación de actualización no permitida" +msgstr "" #: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" -msgstr "Operación de eliminación no permitida" +msgstr "" #: templates/js/translated/forms.js:419 msgid "View operation not allowed" -msgstr "Operación de visualización no permitida" +msgstr "" #: templates/js/translated/forms.js:796 msgid "Keep this form open" -msgstr "Mantener este formulario abierto" +msgstr "" #: templates/js/translated/forms.js:899 msgid "Enter a valid number" -msgstr "Introduzca un número válido" +msgstr "" #: templates/js/translated/forms.js:1469 templates/modals.html:19 #: templates/modals.html:43 @@ -11385,35 +11655,35 @@ msgstr "Existen errores en el formulario" #: templates/js/translated/forms.js:1967 msgid "No results found" -msgstr "No hay resultados" +msgstr "" #: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239 msgid "Searching" -msgstr "Buscando" +msgstr "" #: templates/js/translated/forms.js:2485 msgid "Clear input" -msgstr "Limpiar entrada" +msgstr "" #: templates/js/translated/forms.js:3071 msgid "File Column" -msgstr "Columna de archivo" +msgstr "" #: templates/js/translated/forms.js:3071 msgid "Field Name" -msgstr "Nombre del campo" +msgstr "" #: templates/js/translated/forms.js:3083 msgid "Select Columns" -msgstr "Seleccionar columnas" +msgstr "" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "SI" +msgstr "" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "NO" +msgstr "" #: templates/js/translated/helpers.js:93 msgid "True" @@ -11427,29 +11697,25 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" -msgstr "Seleccionar artículos" +msgstr "" #: templates/js/translated/label.js:54 msgid "No items selected for printing" -msgstr "No hay artículos seleccionados para imprimir" +msgstr "" #: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "No se encontraron etiquetas" +msgstr "" #: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" -msgstr "No se encontraron plantillas de etiqueta que coincidan con los artículos seleccionados" +msgstr "" #: templates/js/translated/label.js:97 msgid "selected" -msgstr "seleccionado" +msgstr "" #: templates/js/translated/label.js:133 msgid "Printing Options" @@ -11477,12 +11743,12 @@ msgstr "" #: templates/js/translated/label.js:187 msgid "Labels sent to printer" -msgstr "Etiquetas enviadas a la impresora" +msgstr "" #: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 #: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "Cancelar" +msgstr "" #: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 #: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 @@ -11492,81 +11758,81 @@ msgstr "Enviar" #: templates/js/translated/modals.js:156 msgid "Form Title" -msgstr "Título del Formulario" +msgstr "" #: templates/js/translated/modals.js:445 msgid "Waiting for server..." -msgstr "Esperando al servidor..." +msgstr "" #: templates/js/translated/modals.js:596 msgid "Show Error Information" -msgstr "Mostrar Información de Error" +msgstr "" #: templates/js/translated/modals.js:682 msgid "Accept" -msgstr "Aceptar" +msgstr "" #: templates/js/translated/modals.js:740 msgid "Loading Data" -msgstr "Cargando Datos" +msgstr "" #: templates/js/translated/modals.js:1011 msgid "Invalid response from server" -msgstr "Respuesta no válida del servidor" +msgstr "" #: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" -msgstr "Datos del formulario faltantes de la respuesta del servidor" +msgstr "" #: templates/js/translated/modals.js:1023 msgid "Error posting form data" -msgstr "Error al publicar datos del formulario" +msgstr "" #: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" -msgstr "Respuesta JSON faltan datos del formulario" +msgstr "" #: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" -msgstr "Error 400: Solicitud Incorrecta" +msgstr "" #: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" -msgstr "El servidor devolvió el código de error 400" +msgstr "" #: templates/js/translated/modals.js:1159 msgid "Error requesting form data" -msgstr "Error al solicitar datos del formulario" +msgstr "" #: templates/js/translated/news.js:33 msgid "No news found" -msgstr "No hay novedades" +msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 #: templates/js/translated/part.js:1604 msgid "ID" -msgstr "Identificación" +msgstr "" #: templates/js/translated/notification.js:52 msgid "Age" -msgstr "Edad" +msgstr "" #: templates/js/translated/notification.js:65 msgid "Notification" -msgstr "Notificación" +msgstr "" #: templates/js/translated/notification.js:224 msgid "Mark as unread" -msgstr "Marcar como no leído" +msgstr "" #: templates/js/translated/notification.js:228 msgid "Mark as read" -msgstr "Marcar como leído" +msgstr "" #: templates/js/translated/notification.js:254 msgid "No unread notifications" -msgstr "No hay notificaciones sin leer" +msgstr "" #: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" @@ -11574,60 +11840,60 @@ msgstr "Las notificaciones cargarán aquí" #: templates/js/translated/order.js:89 msgid "Add Extra Line Item" -msgstr "Añadir partida extra" +msgstr "" #: templates/js/translated/order.js:126 msgid "Export Order" -msgstr "Exportar Orden" +msgstr "" #: templates/js/translated/order.js:241 msgid "Duplicate Line" -msgstr "Duplicar línea" +msgstr "" #: templates/js/translated/order.js:255 msgid "Edit Line" -msgstr "Editar línea" +msgstr "" #: templates/js/translated/order.js:268 msgid "Delete Line" -msgstr "Eliminar línea" +msgstr "" #: templates/js/translated/order.js:281 #: templates/js/translated/purchase_order.js:1987 msgid "No line items found" -msgstr "No hay partidas" +msgstr "" #: templates/js/translated/order.js:369 msgid "Duplicate line" -msgstr "Duplicar línea" +msgstr "" #: templates/js/translated/order.js:370 msgid "Edit line" -msgstr "Editar línea" +msgstr "" #: templates/js/translated/order.js:374 msgid "Delete line" -msgstr "Eliminar línea" +msgstr "" #: templates/js/translated/part.js:90 msgid "Part Attributes" -msgstr "Atributos de Parte" +msgstr "" #: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "Opciones de Creación de Parte" +msgstr "" #: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "Opciones de Duplicación de Parte" +msgstr "" #: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "Añadir Categoría de Parte" +msgstr "" #: templates/js/translated/part.js:308 msgid "Parent part category" -msgstr "Categoría superior de parte" +msgstr "" #: templates/js/translated/part.js:332 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" @@ -11635,7 +11901,7 @@ msgstr "" #: templates/js/translated/part.js:352 msgid "Create Part Category" -msgstr "Crear Categoría de Parte" +msgstr "" #: templates/js/translated/part.js:355 msgid "Create new category after this one" @@ -11643,11 +11909,11 @@ msgstr "" #: templates/js/translated/part.js:356 msgid "Part category created" -msgstr "Categoría de partes creada" +msgstr "" #: templates/js/translated/part.js:370 msgid "Edit Part Category" -msgstr "Editar Categoría de Parte" +msgstr "" #: templates/js/translated/part.js:383 msgid "Are you sure you want to delete this part category?" @@ -11655,11 +11921,11 @@ msgstr "" #: templates/js/translated/part.js:388 msgid "Move to parent category" -msgstr "Mover a la categoría padre" +msgstr "" #: templates/js/translated/part.js:397 msgid "Delete Part Category" -msgstr "Eliminar Categoría de Parte" +msgstr "" #: templates/js/translated/part.js:401 msgid "Action for parts in this category" @@ -11671,7 +11937,7 @@ msgstr "" #: templates/js/translated/part.js:430 msgid "Create Part" -msgstr "Crear Parte" +msgstr "" #: templates/js/translated/part.js:432 msgid "Create another part after this one" @@ -11679,23 +11945,23 @@ msgstr "" #: templates/js/translated/part.js:433 msgid "Part created successfully" -msgstr "Parte creada con éxito" +msgstr "" #: templates/js/translated/part.js:461 msgid "Edit Part" -msgstr "Editar Parte" +msgstr "" #: templates/js/translated/part.js:463 msgid "Part edited" -msgstr "Parte editada" +msgstr "" #: templates/js/translated/part.js:474 msgid "Create Part Variant" -msgstr "Crear Variante de Parte" +msgstr "" #: templates/js/translated/part.js:531 msgid "Active Part" -msgstr "Parte activa" +msgstr "" #: templates/js/translated/part.js:532 msgid "Part cannot be deleted as it is currently active" @@ -11719,68 +11985,68 @@ msgstr "" #: templates/js/translated/part.js:557 msgid "Delete Part" -msgstr "Eliminar parte" +msgstr "" #: templates/js/translated/part.js:593 msgid "You are subscribed to notifications for this item" -msgstr "Estás suscrito a las notificaciones de este artículo" +msgstr "" #: templates/js/translated/part.js:595 msgid "You have subscribed to notifications for this item" -msgstr "Te has suscrito a las notificaciones de este artículo" +msgstr "" #: templates/js/translated/part.js:600 msgid "Subscribe to notifications for this item" -msgstr "Suscríbete a las notificaciones de este artículo" +msgstr "" #: templates/js/translated/part.js:602 msgid "You have unsubscribed to notifications for this item" -msgstr "Has cancelado la suscripción a las notificaciones de este artículo" +msgstr "" #: templates/js/translated/part.js:619 msgid "Validating the BOM will mark each line item as valid" -msgstr "Validar el BOM marcará cada partida como válida" +msgstr "" #: templates/js/translated/part.js:629 msgid "Validate Bill of Materials" -msgstr "Validar la Factura de Materiales" +msgstr "" #: templates/js/translated/part.js:632 msgid "Validated Bill of Materials" -msgstr "Validación de Lista de Materiales" +msgstr "" #: templates/js/translated/part.js:657 msgid "Copy Bill of Materials" -msgstr "Copiar Factura de Materiales" +msgstr "" #: templates/js/translated/part.js:685 #: templates/js/translated/table_filters.js:743 msgid "Low stock" -msgstr "Stock bajo" +msgstr "" #: templates/js/translated/part.js:688 msgid "No stock available" -msgstr "Existencias no disponibles" +msgstr "" #: templates/js/translated/part.js:748 msgid "Demand" -msgstr "Demanda" +msgstr "" #: templates/js/translated/part.js:771 msgid "Unit" -msgstr "Unidad" +msgstr "" #: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 msgid "Virtual part" -msgstr "Parte virtual" +msgstr "" #: templates/js/translated/part.js:806 msgid "Subscribed part" -msgstr "Parte suscrita" +msgstr "" #: templates/js/translated/part.js:810 msgid "Salable part" -msgstr "Parte vendible" +msgstr "" #: templates/js/translated/part.js:889 msgid "Schedule generation of a new stocktake report." @@ -11812,15 +12078,15 @@ msgstr "" #: templates/js/translated/part.js:1281 msgid "No variants found" -msgstr "No se encontraron variantes" +msgstr "" #: templates/js/translated/part.js:1599 msgid "No part parameter templates found" -msgstr "No se encontraron plantillas de parámetros de parte" +msgstr "" #: templates/js/translated/part.js:1662 msgid "Edit Part Parameter Template" -msgstr "Crear plantilla Parámetro de Parte" +msgstr "" #: templates/js/translated/part.js:1674 msgid "Any parameters which reference this template will also be deleted" @@ -11828,36 +12094,36 @@ msgstr "" #: templates/js/translated/part.js:1682 msgid "Delete Part Parameter Template" -msgstr "Eliminar Plantilla de Parámetros de Parte" +msgstr "" #: templates/js/translated/part.js:1716 #: templates/js/translated/purchase_order.js:1651 msgid "No purchase orders found" -msgstr "No se encontraron órdenes de compra" +msgstr "" #: templates/js/translated/part.js:1860 #: templates/js/translated/purchase_order.js:2150 #: templates/js/translated/return_order.js:756 #: templates/js/translated/sales_order.js:1875 msgid "This line item is overdue" -msgstr "Esta partida está atrasada" +msgstr "" #: templates/js/translated/part.js:1906 #: templates/js/translated/purchase_order.js:2217 msgid "Receive line item" -msgstr "Recibir partida" +msgstr "" #: templates/js/translated/part.js:1969 msgid "Delete part relationship" -msgstr "Eliminar relación de parte" +msgstr "" #: templates/js/translated/part.js:1991 msgid "Delete Part Relationship" -msgstr "Eliminar Relación de Parte" +msgstr "" #: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 msgid "No parts found" -msgstr "No se encontraron partes" +msgstr "" #: templates/js/translated/part.js:2200 msgid "Set the part category for the selected parts" @@ -11865,28 +12131,32 @@ msgstr "" #: templates/js/translated/part.js:2205 msgid "Set Part Category" -msgstr "Definir Categoría de Parte" +msgstr "" #: templates/js/translated/part.js:2235 msgid "Set category" -msgstr "Definir categoría" +msgstr "" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" #: templates/js/translated/part.js:2288 msgid "parts" -msgstr "partes" +msgstr "" #: templates/js/translated/part.js:2384 msgid "No category" -msgstr "Sin categoría" +msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2640 msgid "Display as list" -msgstr "Mostrar como lista" +msgstr "" #: templates/js/translated/part.js:2547 msgid "Display as grid" -msgstr "Mostrar como cuadrícula" +msgstr "" #: templates/js/translated/part.js:2645 msgid "No subcategories found" @@ -11894,44 +12164,44 @@ msgstr "" #: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "Mostrar como árbol" +msgstr "" #: templates/js/translated/part.js:2761 msgid "Load Subcategories" -msgstr "Cargar subcategorías" +msgstr "" #: templates/js/translated/part.js:2777 msgid "Subscribed category" -msgstr "Categoría suscrita" +msgstr "" #: templates/js/translated/part.js:2854 msgid "No test templates matching query" -msgstr "No hay plantillas de prueba que coincidan con la consulta" +msgstr "" #: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436 msgid "Edit test result" -msgstr "Editar resultado de prueba" +msgstr "" #: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437 #: templates/js/translated/stock.js:1699 msgid "Delete test result" -msgstr "Eliminar resultado de prueba" +msgstr "" #: templates/js/translated/part.js:2910 msgid "This test is defined for a parent part" -msgstr "Esta prueba está definida para una parte principal" +msgstr "" #: templates/js/translated/part.js:2926 msgid "Edit Test Result Template" -msgstr "Editar plantilla de resultado de prueba" +msgstr "" #: templates/js/translated/part.js:2940 msgid "Delete Test Result Template" -msgstr "Eliminar plantilla de resultados de prueba" +msgstr "" #: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020 msgid "No date specified" -msgstr "Sin fecha especificada" +msgstr "" #: templates/js/translated/part.js:3022 msgid "Specified date is in the past" @@ -11939,7 +12209,7 @@ msgstr "" #: templates/js/translated/part.js:3028 msgid "Speculative" -msgstr "Especulativo" +msgstr "" #: templates/js/translated/part.js:3078 msgid "No scheduling information available for this part" @@ -11955,15 +12225,15 @@ msgstr "" #: templates/js/translated/part.js:3196 msgid "Maximum Quantity" -msgstr "Cantidad máxima" +msgstr "" #: templates/js/translated/part.js:3241 msgid "Minimum Stock Level" -msgstr "Nivel mínimo de stock" +msgstr "" #: templates/js/translated/plugin.js:46 msgid "No plugins found" -msgstr "No se encontraron complementos" +msgstr "" #: templates/js/translated/plugin.js:58 msgid "This plugin is no longer installed" @@ -11971,7 +12241,7 @@ msgstr "" #: templates/js/translated/plugin.js:60 msgid "This plugin is active" -msgstr "Este complemento está activo" +msgstr "" #: templates/js/translated/plugin.js:62 msgid "This plugin is installed but not active" @@ -11979,35 +12249,35 @@ msgstr "" #: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:186 msgid "Disable Plugin" -msgstr "Desactivar Plugin" +msgstr "" #: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:186 msgid "Enable Plugin" -msgstr "Activar Plugin" +msgstr "" #: templates/js/translated/plugin.js:158 msgid "The Plugin was installed" -msgstr "El Plugin fue Instalado" +msgstr "" #: templates/js/translated/plugin.js:177 msgid "Are you sure you want to enable this plugin?" -msgstr "¿Estás seguro de que deseas activar este complemento?" +msgstr "" #: templates/js/translated/plugin.js:181 msgid "Are you sure you want to disable this plugin?" -msgstr "¿Estás seguro de que deseas desactivar este complemento?" +msgstr "" #: templates/js/translated/plugin.js:189 msgid "Enable" -msgstr "Activar" +msgstr "" #: templates/js/translated/plugin.js:189 msgid "Disable" -msgstr "Desactivar" +msgstr "" #: templates/js/translated/plugin.js:203 msgid "Plugin updated" -msgstr "Complemento actualizado" +msgstr "" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" @@ -12039,15 +12309,15 @@ msgstr "" #: templates/js/translated/pricing.js:916 msgid "Sale Price History" -msgstr "Historial de precios de venta" +msgstr "" #: templates/js/translated/pricing.js:1005 msgid "No variant data available" -msgstr "No hay datos de variantes disponibles" +msgstr "" #: templates/js/translated/pricing.js:1045 msgid "Variant Part" -msgstr "Parte variante" +msgstr "" #: templates/js/translated/purchase_order.js:169 msgid "Select purchase order to duplicate" @@ -12055,23 +12325,23 @@ msgstr "" #: templates/js/translated/purchase_order.js:176 msgid "Duplicate Line Items" -msgstr "Duplicar partidas" +msgstr "" #: templates/js/translated/purchase_order.js:177 msgid "Duplicate all line items from the selected order" -msgstr "Duplicar todos las partidas del pedido seleccionado" +msgstr "" #: templates/js/translated/purchase_order.js:184 msgid "Duplicate Extra Lines" -msgstr "Duplicar líneas adicionales" +msgstr "" #: templates/js/translated/purchase_order.js:185 msgid "Duplicate extra line items from the selected order" -msgstr "Duplicar las partidas extra del pedido seleccionado" +msgstr "" #: templates/js/translated/purchase_order.js:206 msgid "Edit Purchase Order" -msgstr "Modificar orden de compra" +msgstr "" #: templates/js/translated/purchase_order.js:223 msgid "Duplication Options" @@ -12079,30 +12349,30 @@ msgstr "" #: templates/js/translated/purchase_order.js:450 msgid "Complete Purchase Order" -msgstr "Completar orden de compra" +msgstr "" #: templates/js/translated/purchase_order.js:467 #: templates/js/translated/return_order.js:210 #: templates/js/translated/sales_order.js:500 msgid "Mark this order as complete?" -msgstr "Marcar pedido como completado?" +msgstr "" #: templates/js/translated/purchase_order.js:473 msgid "All line items have been received" -msgstr "Todos las partidas han sido recibidas" +msgstr "" #: templates/js/translated/purchase_order.js:478 msgid "This order has line items which have not been marked as received." -msgstr "Este pedido tiene partidas que no han sido marcadas como recibidas." +msgstr "" #: templates/js/translated/purchase_order.js:479 #: templates/js/translated/sales_order.js:514 msgid "Completing this order means that the order and line items will no longer be editable." -msgstr "Completar este pedido significa que la orden y las partidas ya no serán editables." +msgstr "" #: templates/js/translated/purchase_order.js:502 msgid "Cancel Purchase Order" -msgstr "Cancelar orden de compra" +msgstr "" #: templates/js/translated/purchase_order.js:507 msgid "Are you sure you wish to cancel this purchase order?" @@ -12115,7 +12385,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:534 #: templates/js/translated/return_order.js:164 msgid "After placing this order, line items will no longer be editable." -msgstr "Después de realizar esta orden de compra, las partidas ya no serán editables." +msgstr "" #: templates/js/translated/purchase_order.js:539 msgid "Issue Purchase Order" @@ -12127,68 +12397,68 @@ msgstr "" #: templates/js/translated/purchase_order.js:656 msgid "Quantity to order" -msgstr "Cantidad a ordenar" +msgstr "" #: templates/js/translated/purchase_order.js:665 msgid "New supplier part" -msgstr "Nueva parte del proveedor" +msgstr "" #: templates/js/translated/purchase_order.js:683 msgid "New purchase order" -msgstr "Nueva orden de compra" +msgstr "" #: templates/js/translated/purchase_order.js:715 msgid "Add to purchase order" -msgstr "Añadir a la orden de compra" +msgstr "" #: templates/js/translated/purchase_order.js:863 msgid "No matching supplier parts" -msgstr "No hay partes de proveedor coincidentes" +msgstr "" #: templates/js/translated/purchase_order.js:882 msgid "No matching purchase orders" -msgstr "No hay órdenes de compra coincidentes" +msgstr "" #: templates/js/translated/purchase_order.js:1069 msgid "Select Line Items" -msgstr "Seleccionar partidas" +msgstr "" #: templates/js/translated/purchase_order.js:1070 #: templates/js/translated/return_order.js:492 msgid "At least one line item must be selected" -msgstr "Debe seleccionar al menos una partida" +msgstr "" #: templates/js/translated/purchase_order.js:1100 msgid "Received Quantity" -msgstr "Cantidad recibida" +msgstr "" #: templates/js/translated/purchase_order.js:1111 msgid "Quantity to receive" -msgstr "Cantidad a recibir" +msgstr "" #: templates/js/translated/purchase_order.js:1187 msgid "Stock Status" -msgstr "Estado del Stock" +msgstr "" #: templates/js/translated/purchase_order.js:1201 msgid "Add barcode" -msgstr "Agregar código de barras" +msgstr "" #: templates/js/translated/purchase_order.js:1202 msgid "Remove barcode" -msgstr "Eliminar código de barras" +msgstr "" #: templates/js/translated/purchase_order.js:1205 msgid "Specify location" -msgstr "Especificar ubicación" +msgstr "" #: templates/js/translated/purchase_order.js:1213 msgid "Add batch code" -msgstr "Añadir código de lote" +msgstr "" #: templates/js/translated/purchase_order.js:1224 msgid "Add serial numbers" -msgstr "Añadir números de serie" +msgstr "" #: templates/js/translated/purchase_order.js:1276 msgid "Serials" @@ -12196,20 +12466,20 @@ msgstr "" #: templates/js/translated/purchase_order.js:1301 msgid "Order Code" -msgstr "Código de Pedido" +msgstr "" #: templates/js/translated/purchase_order.js:1303 msgid "Quantity to Receive" -msgstr "Cantidad a recibir" +msgstr "" #: templates/js/translated/purchase_order.js:1329 #: templates/js/translated/return_order.js:561 msgid "Confirm receipt of items" -msgstr "Confirmar recepción de artículos" +msgstr "" #: templates/js/translated/purchase_order.js:1330 msgid "Receive Purchase Order Items" -msgstr "Recibir artículos de orden de compra" +msgstr "" #: templates/js/translated/purchase_order.js:1398 msgid "Scan Item Barcode" @@ -12228,73 +12498,73 @@ msgstr "" #: templates/js/translated/sales_order.js:774 #: templates/js/translated/sales_order.js:998 msgid "Order is overdue" -msgstr "El pedido está vencido" +msgstr "" #: templates/js/translated/purchase_order.js:1744 #: templates/js/translated/return_order.js:354 #: templates/js/translated/sales_order.js:851 #: templates/js/translated/sales_order.js:1011 msgid "Items" -msgstr "Artículos" +msgstr "" #: templates/js/translated/purchase_order.js:1840 msgid "All selected Line items will be deleted" -msgstr "Todos las partidas seleccionadas serán eliminadas" +msgstr "" #: templates/js/translated/purchase_order.js:1858 msgid "Delete selected Line items?" -msgstr "¿Eliminar partidas seleccionadas?" +msgstr "" #: templates/js/translated/purchase_order.js:1913 #: templates/js/translated/sales_order.js:2070 msgid "Duplicate Line Item" -msgstr "Duplicar partida" +msgstr "" #: templates/js/translated/purchase_order.js:1928 #: templates/js/translated/return_order.js:476 #: templates/js/translated/return_order.js:669 #: templates/js/translated/sales_order.js:2083 msgid "Edit Line Item" -msgstr "Editar partida" +msgstr "" #: templates/js/translated/purchase_order.js:1939 #: templates/js/translated/return_order.js:682 #: templates/js/translated/sales_order.js:2094 msgid "Delete Line Item" -msgstr "Eliminar partida" +msgstr "" #: templates/js/translated/purchase_order.js:2221 #: templates/js/translated/sales_order.js:2024 msgid "Duplicate line item" -msgstr "Duplicar partida" +msgstr "" #: templates/js/translated/purchase_order.js:2222 #: templates/js/translated/return_order.js:801 #: templates/js/translated/sales_order.js:2025 msgid "Edit line item" -msgstr "Editar partida" +msgstr "" #: templates/js/translated/purchase_order.js:2223 #: templates/js/translated/return_order.js:805 #: templates/js/translated/sales_order.js:2031 msgid "Delete line item" -msgstr "Eliminar partida" +msgstr "" #: templates/js/translated/report.js:63 msgid "items selected" -msgstr "ítems seleccionados" +msgstr "" #: templates/js/translated/report.js:71 msgid "Select Report Template" -msgstr "Seleccionar Plantilla de Informe" +msgstr "" #: templates/js/translated/report.js:86 msgid "Select Test Report Template" -msgstr "Seleccione Plantilla de Informe de Prueba" +msgstr "" #: templates/js/translated/report.js:140 msgid "No Reports Found" -msgstr "No se Encontraron Informes" +msgstr "" #: templates/js/translated/report.js:141 msgid "No report templates found which match the selected items" @@ -12303,7 +12573,7 @@ msgstr "" #: templates/js/translated/return_order.js:60 #: templates/js/translated/sales_order.js:86 msgid "Add Customer" -msgstr "Añadir Cliente" +msgstr "" #: templates/js/translated/return_order.js:134 msgid "Create Return Order" @@ -12336,201 +12606,201 @@ msgstr "" #: templates/js/translated/return_order.js:300 #: templates/js/translated/sales_order.js:788 msgid "Invalid Customer" -msgstr "Cliente Inválido" +msgstr "" #: templates/js/translated/return_order.js:562 msgid "Receive Return Order Items" -msgstr "Recibir artículos de pedido de devolución" +msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" -msgstr "No hay partidas coincidentes" +msgstr "" #: templates/js/translated/return_order.js:798 msgid "Mark item as received" -msgstr "Marcar artículo como recibido" +msgstr "" #: templates/js/translated/sales_order.js:161 msgid "Create Sales Order" -msgstr "Crear Orden de Venta" +msgstr "" #: templates/js/translated/sales_order.js:176 msgid "Edit Sales Order" -msgstr "Editar orden de venta" +msgstr "" #: templates/js/translated/sales_order.js:291 msgid "No stock items have been allocated to this shipment" -msgstr "No se ha asignado ningún artículo de stock a este envío" +msgstr "" #: templates/js/translated/sales_order.js:296 msgid "The following stock items will be shipped" -msgstr "Los siguientes artículos de stock serán enviados" +msgstr "" #: templates/js/translated/sales_order.js:336 msgid "Complete Shipment" -msgstr "Completar Envío" +msgstr "" #: templates/js/translated/sales_order.js:360 msgid "Confirm Shipment" -msgstr "Confirmar Envío" +msgstr "" #: templates/js/translated/sales_order.js:416 msgid "No pending shipments found" -msgstr "No se encontraron envíos pendientes" +msgstr "" #: templates/js/translated/sales_order.js:420 msgid "No stock items have been allocated to pending shipments" -msgstr "No se ha asignado ningún artículo de almacén a los envíos pendientes" +msgstr "" #: templates/js/translated/sales_order.js:430 msgid "Complete Shipments" -msgstr "Completar Envíos" +msgstr "" #: templates/js/translated/sales_order.js:452 msgid "Skip" -msgstr "Omitir" +msgstr "" #: templates/js/translated/sales_order.js:513 msgid "This order has line items which have not been completed." -msgstr "Este pedido tiene partidas que no han sido completadas." +msgstr "" #: templates/js/translated/sales_order.js:535 msgid "Issue this Sales Order?" -msgstr "¿Emitir este pedido de venta?" +msgstr "" #: templates/js/translated/sales_order.js:540 msgid "Issue Sales Order" -msgstr "Emitir orden de venta" +msgstr "" #: templates/js/translated/sales_order.js:559 msgid "Cancel Sales Order" -msgstr "Cancelar orden de venta" +msgstr "" #: templates/js/translated/sales_order.js:564 msgid "Cancelling this order means that the order will no longer be editable." -msgstr "Cancelar esta orden significa que la orden ya no será editable." +msgstr "" #: templates/js/translated/sales_order.js:618 msgid "Create New Shipment" -msgstr "Crear Nuevo Envío" +msgstr "" #: templates/js/translated/sales_order.js:728 msgid "No sales orders found" -msgstr "No se encontraron ventas" +msgstr "" #: templates/js/translated/sales_order.js:908 msgid "Edit shipment" -msgstr "Editar envío" +msgstr "" #: templates/js/translated/sales_order.js:911 msgid "Complete shipment" -msgstr "Completar envío" +msgstr "" #: templates/js/translated/sales_order.js:916 msgid "Delete shipment" -msgstr "Eliminar envío" +msgstr "" #: templates/js/translated/sales_order.js:933 msgid "Edit Shipment" -msgstr "Editar envío" +msgstr "" #: templates/js/translated/sales_order.js:948 msgid "Delete Shipment" -msgstr "Eliminar Envío" +msgstr "" #: templates/js/translated/sales_order.js:981 msgid "No matching shipments found" -msgstr "No se encontraron envíos coincidentes" +msgstr "" #: templates/js/translated/sales_order.js:1006 msgid "Shipment Reference" -msgstr "Referencia de Envío" +msgstr "" #: templates/js/translated/sales_order.js:1030 #: templates/js/translated/sales_order.js:1529 msgid "Not shipped" -msgstr "No enviado" +msgstr "" #: templates/js/translated/sales_order.js:1048 msgid "Tracking" -msgstr "Seguimiento" +msgstr "" #: templates/js/translated/sales_order.js:1052 msgid "Invoice" -msgstr "Factura" +msgstr "" #: templates/js/translated/sales_order.js:1219 msgid "Add Shipment" -msgstr "Añadir envío" +msgstr "" #: templates/js/translated/sales_order.js:1270 msgid "Confirm stock allocation" -msgstr "Confirmar asignación de stock" +msgstr "" #: templates/js/translated/sales_order.js:1271 msgid "Allocate Stock Items to Sales Order" -msgstr "Asignar artículos de stock a pedido de venta" +msgstr "" #: templates/js/translated/sales_order.js:1477 msgid "No sales order allocations found" -msgstr "No se encontraron asignaciones de órdenes" +msgstr "" #: templates/js/translated/sales_order.js:1569 msgid "Edit Stock Allocation" -msgstr "Editar Asignación de Stock" +msgstr "" #: templates/js/translated/sales_order.js:1583 msgid "Confirm Delete Operation" -msgstr "Confirmar Operación de Eliminar" +msgstr "" #: templates/js/translated/sales_order.js:1584 msgid "Delete Stock Allocation" -msgstr "Eliminar Adjudicación de Stock" +msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 #: templates/js/translated/stock.js:1744 msgid "Shipped to customer" -msgstr "Enviado al cliente" +msgstr "" #: templates/js/translated/sales_order.js:1631 #: templates/js/translated/sales_order.js:1719 msgid "Stock location not specified" -msgstr "Ubicación de stock no especificada" +msgstr "" #: templates/js/translated/sales_order.js:2008 msgid "Allocate serial numbers" -msgstr "Asignar números de serie" +msgstr "" #: templates/js/translated/sales_order.js:2012 msgid "Purchase stock" -msgstr "Comprar stock" +msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" -msgstr "Calcular precio" +msgstr "" #: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been shipped" -msgstr "No se puede eliminar ya que los artículos han sido enviados" +msgstr "" #: templates/js/translated/sales_order.js:2038 msgid "Cannot be deleted as items have been allocated" -msgstr "No se puede eliminar ya que los artículos han sido asignados" +msgstr "" #: templates/js/translated/sales_order.js:2109 msgid "Allocate Serial Numbers" -msgstr "Asignar Números de Serie" +msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" -msgstr "Actualizar precio unitario" +msgstr "" #: templates/js/translated/search.js:270 msgid "No results" -msgstr "Sin resultados" +msgstr "" #: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" @@ -12538,27 +12808,27 @@ msgstr "Ingresar consulta de búsqueda" #: templates/js/translated/search.js:342 msgid "result" -msgstr "resultado" +msgstr "" #: templates/js/translated/search.js:342 msgid "results" -msgstr "resultados" +msgstr "" #: templates/js/translated/search.js:352 msgid "Minimize results" -msgstr "Minimizar resultados" +msgstr "" #: templates/js/translated/search.js:355 msgid "Remove results" -msgstr "Eliminar resultados" +msgstr "" #: templates/js/translated/stock.js:98 msgid "Serialize Stock Item" -msgstr "Serializar Artículo de Stock" +msgstr "" #: templates/js/translated/stock.js:129 msgid "Confirm Stock Serialization" -msgstr "Confirmar Serialización de Stock" +msgstr "" #: templates/js/translated/stock.js:139 msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" @@ -12566,7 +12836,7 @@ msgstr "" #: templates/js/translated/stock.js:152 msgid "Parent stock location" -msgstr "Ubicación del stock principal" +msgstr "" #: templates/js/translated/stock.js:166 msgid "Add Location type" @@ -12574,31 +12844,31 @@ msgstr "" #: templates/js/translated/stock.js:202 msgid "Edit Stock Location" -msgstr "Editar ubicación de stock" +msgstr "" #: templates/js/translated/stock.js:217 msgid "New Stock Location" -msgstr "Nueva Ubicación de Stock" +msgstr "" #: templates/js/translated/stock.js:219 msgid "Create another location after this one" -msgstr "Crear otra ubicación después de ésta" +msgstr "" #: templates/js/translated/stock.js:220 msgid "Stock location created" -msgstr "Ubicación de inventario creada" +msgstr "" #: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" -msgstr "¿Está seguro que desea eliminar esta ubicación?" +msgstr "" #: templates/js/translated/stock.js:241 msgid "Move to parent stock location" -msgstr "Mover a la ubicación de inventario del padre" +msgstr "" #: templates/js/translated/stock.js:250 msgid "Delete Stock Location" -msgstr "Eliminar ubicación de stock" +msgstr "" #: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" @@ -12610,7 +12880,7 @@ msgstr "" #: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" -msgstr "Esta parte no se puede serializar" +msgstr "" #: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" @@ -12618,11 +12888,11 @@ msgstr "" #: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" -msgstr "Introduzca la cantidad inicial para este artículo de stock" +msgstr "" #: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "Introduzca números de serie para el nuevo stock (o deje en blanco)" +msgstr "" #: templates/js/translated/stock.js:439 msgid "Stock item duplicated" @@ -12630,19 +12900,19 @@ msgstr "" #: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" -msgstr "Duplicar artículo de stock" +msgstr "" #: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" -msgstr "¿Está seguro que desea eliminar este artículo de stock?" +msgstr "" #: templates/js/translated/stock.js:480 msgid "Delete Stock Item" -msgstr "Eliminar artículo de stock" +msgstr "" #: templates/js/translated/stock.js:501 msgid "Edit Stock Item" -msgstr "Editar artículo de stock" +msgstr "" #: templates/js/translated/stock.js:543 msgid "Create another item after this one" @@ -12650,111 +12920,111 @@ msgstr "" #: templates/js/translated/stock.js:555 msgid "Created new stock item" -msgstr "Crear nuevo artículo de stock" +msgstr "" #: templates/js/translated/stock.js:568 msgid "Created multiple stock items" -msgstr "Creados varios artículos de stock" +msgstr "" #: templates/js/translated/stock.js:593 msgid "Find Serial Number" -msgstr "Encontrar número serial" +msgstr "" #: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "Introducir número de serie" +msgstr "" #: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "Introducir un número de serie" +msgstr "" #: templates/js/translated/stock.js:634 msgid "No matching serial number" -msgstr "Ningún número de serie coincidente" +msgstr "" #: templates/js/translated/stock.js:643 msgid "More than one matching result found" -msgstr "Más de un resultado encontrado" +msgstr "" #: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" -msgstr "Confirmar asignación de stock" +msgstr "" #: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" -msgstr "Asignar Stock al Cliente" +msgstr "" #: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" -msgstr "Advertencia: La operación de fusión no puede ser revertida" +msgstr "" #: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" -msgstr "Alguna información se perderá al combinar artículos de stock" +msgstr "" #: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" -msgstr "Se eliminará el historial de transacciones de stock para artículos fusionados" +msgstr "" #: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" -msgstr "La información de la parte del proveedor se eliminará para los artículos fusionados" +msgstr "" #: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" -msgstr "Confirmar fusión de artículos de stock" +msgstr "" #: templates/js/translated/stock.js:929 msgid "Merge Stock Items" -msgstr "Fusionar Artículos de Stock" +msgstr "" #: templates/js/translated/stock.js:1024 msgid "Transfer Stock" -msgstr "Transferir Stock" +msgstr "" #: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "Mover" +msgstr "" #: templates/js/translated/stock.js:1031 msgid "Count Stock" -msgstr "Contar Stock" +msgstr "" #: templates/js/translated/stock.js:1032 msgid "Count" -msgstr "Contar" +msgstr "" #: templates/js/translated/stock.js:1036 msgid "Remove Stock" -msgstr "Eliminar Stock" +msgstr "" #: templates/js/translated/stock.js:1037 msgid "Take" -msgstr "Tomar" +msgstr "" #: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "Añadir Stock" +msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "Añadir" #: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "Eliminar Stock" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" -msgstr "La cantidad no se puede ajustar para el stock serializado" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" -msgstr "Especificar cantidad de stock" +msgstr "" #: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" -msgstr "Seleccionar artículos de stock" +msgstr "" #: templates/js/translated/stock.js:1178 msgid "Select at least one available stock item" @@ -12762,59 +13032,59 @@ msgstr "" #: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" -msgstr "Confirmar ajuste de stock" +msgstr "" #: templates/js/translated/stock.js:1360 msgid "PASS" -msgstr "PASA" +msgstr "" #: templates/js/translated/stock.js:1362 msgid "FAIL" -msgstr "FALLO" +msgstr "" #: templates/js/translated/stock.js:1367 msgid "NO RESULT" -msgstr "SIN RESULTADO" +msgstr "" #: templates/js/translated/stock.js:1429 msgid "Pass test" -msgstr "Pruebas pasadas" +msgstr "" #: templates/js/translated/stock.js:1432 msgid "Add test result" -msgstr "Añadir resultado de prueba" +msgstr "" #: templates/js/translated/stock.js:1456 msgid "No test results found" -msgstr "No se encontraron resultados de prueba" +msgstr "" #: templates/js/translated/stock.js:1520 msgid "Test Date" -msgstr "Fecha de Prueba" +msgstr "" #: templates/js/translated/stock.js:1682 msgid "Edit Test Result" -msgstr "Editar Resultados de Prueba" +msgstr "" #: templates/js/translated/stock.js:1704 msgid "Delete Test Result" -msgstr "Borrar Resultado de Prueba" +msgstr "" #: templates/js/translated/stock.js:1736 msgid "In production" -msgstr "En producción" +msgstr "" #: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" -msgstr "Instalado en el artículo de stock" +msgstr "" #: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" -msgstr "Asignado a la Orden de Venta" +msgstr "" #: templates/js/translated/stock.js:1754 msgid "No stock location set" -msgstr "Ninguna ubicación de stock establecida" +msgstr "" #: templates/js/translated/stock.js:1810 msgid "Change stock status" @@ -12822,11 +13092,11 @@ msgstr "" #: templates/js/translated/stock.js:1819 msgid "Merge stock" -msgstr "Fusionar stock" +msgstr "" #: templates/js/translated/stock.js:1868 msgid "Delete stock" -msgstr "Eliminar existencias" +msgstr "" #: templates/js/translated/stock.js:1923 msgid "stock items" @@ -12846,31 +13116,31 @@ msgstr "" #: templates/js/translated/stock.js:2061 msgid "Stock item is in production" -msgstr "El artículo de stock está en producción" +msgstr "" #: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" -msgstr "Artículo de stock asignado al pedido de venta" +msgstr "" #: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" -msgstr "Artículo de stock asignado al cliente" +msgstr "" #: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" -msgstr "Se ha asignado un artículo de stock serializado" +msgstr "" #: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" -msgstr "Artículo de stock ha sido completamente asignado" +msgstr "" #: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" -msgstr "Artículo de stock ha sido asignado parcialmente" +msgstr "" #: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" -msgstr "Artículo de stock ha sido instalado en otro artículo" +msgstr "" #: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" @@ -12878,32 +13148,32 @@ msgstr "" #: templates/js/translated/stock.js:2085 msgid "Stock item has expired" -msgstr "Artículo de stock ha caducado" +msgstr "" #: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" -msgstr "El artículo de stock caducará pronto" +msgstr "" #: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" -msgstr "Artículo de stock ha sido rechazado" +msgstr "" #: templates/js/translated/stock.js:2094 msgid "Stock item is lost" -msgstr "Artículo de stock perdido" +msgstr "" #: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" -msgstr "Artículo de stock destruido" +msgstr "" #: templates/js/translated/stock.js:2100 #: templates/js/translated/table_filters.js:350 msgid "Depleted" -msgstr "Agotado" +msgstr "" #: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" -msgstr "Parte del proveedor no especificada" +msgstr "" #: templates/js/translated/stock.js:2312 msgid "Stock Value" @@ -12911,7 +13181,7 @@ msgstr "" #: templates/js/translated/stock.js:2440 msgid "No stock items matching query" -msgstr "No hay artículos de stock que coincidan con la consulta" +msgstr "" #: templates/js/translated/stock.js:2544 msgid "stock locations" @@ -12923,19 +13193,19 @@ msgstr "" #: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "Detalles" +msgstr "" #: templates/js/translated/stock.js:2821 msgid "No changes" -msgstr "Sin cambios" +msgstr "" #: templates/js/translated/stock.js:2833 msgid "Part information unavailable" -msgstr "Información de la parte no disponible" +msgstr "" #: templates/js/translated/stock.js:2855 msgid "Location no longer exists" -msgstr "Ubicación ya no existe" +msgstr "" #: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" @@ -12943,39 +13213,39 @@ msgstr "" #: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" -msgstr "La orden de compra ya no existe" +msgstr "" #: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" -msgstr "El pedido de venta ya no existe" +msgstr "" #: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" -msgstr "El pedido de devolución ya no existe" +msgstr "" #: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" -msgstr "El cliente ya no existe" +msgstr "" #: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" -msgstr "Artículo de stock ya no existe" +msgstr "" #: templates/js/translated/stock.js:2976 msgid "Added" -msgstr "Añadido" +msgstr "" #: templates/js/translated/stock.js:2984 msgid "Removed" -msgstr "Eliminado" +msgstr "" #: templates/js/translated/stock.js:3056 msgid "No installed items" -msgstr "Ningún artículo instalado" +msgstr "" #: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" -msgstr "Desinstalar artículo de stock" +msgstr "" #: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" @@ -12987,7 +13257,7 @@ msgstr "" #: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" -msgstr "Los artículos de stock sólo pueden ser instalados si cumplen con los siguientes criterios" +msgstr "" #: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" @@ -13007,7 +13277,7 @@ msgstr "" #: templates/js/translated/stock.js:3205 msgid "Select part to install" -msgstr "Seleccionar parte para instalar" +msgstr "" #: templates/js/translated/stock.js:3268 msgid "Select one or more stock items" @@ -13023,58 +13293,58 @@ msgstr "" #: templates/js/translated/table_filters.js:74 msgid "Has project code" -msgstr "Tiene código de proyecto" +msgstr "" #: templates/js/translated/table_filters.js:89 #: templates/js/translated/table_filters.js:601 #: templates/js/translated/table_filters.js:613 #: templates/js/translated/table_filters.js:654 msgid "Order status" -msgstr "Estado del pedido" +msgstr "" #: templates/js/translated/table_filters.js:94 #: templates/js/translated/table_filters.js:618 #: templates/js/translated/table_filters.js:644 #: templates/js/translated/table_filters.js:659 msgid "Outstanding" -msgstr "Pendiente" +msgstr "" #: templates/js/translated/table_filters.js:102 #: templates/js/translated/table_filters.js:524 #: templates/js/translated/table_filters.js:626 #: templates/js/translated/table_filters.js:667 msgid "Assigned to me" -msgstr "Asignado a mí" +msgstr "" #: templates/js/translated/table_filters.js:158 msgid "Trackable Part" -msgstr "Parte Rastreable" +msgstr "" #: templates/js/translated/table_filters.js:162 msgid "Assembled Part" -msgstr "Parte Ensamblada" +msgstr "" #: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" -msgstr "Tiene stock disponible" +msgstr "" #: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" -msgstr "Permitir stock de variante" +msgstr "" #: templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:775 msgid "Has Pricing" -msgstr "Tiene precio" +msgstr "" #: templates/js/translated/table_filters.js:234 #: templates/js/translated/table_filters.js:345 msgid "Include sublocations" -msgstr "Incluir sub-ubicación" +msgstr "" #: templates/js/translated/table_filters.js:235 msgid "Include locations" -msgstr "Incluir ubicaciones" +msgstr "" #: templates/js/translated/table_filters.js:267 msgid "Has location type" @@ -13084,119 +13354,115 @@ msgstr "" #: templates/js/translated/table_filters.js:279 #: templates/js/translated/table_filters.js:707 msgid "Include subcategories" -msgstr "Incluir subcategorías" +msgstr "" #: templates/js/translated/table_filters.js:287 #: templates/js/translated/table_filters.js:755 msgid "Subscribed" -msgstr "Suscrito" +msgstr "" #: templates/js/translated/table_filters.js:298 #: templates/js/translated/table_filters.js:380 msgid "Is Serialized" -msgstr "Es Serializado" +msgstr "" #: templates/js/translated/table_filters.js:301 #: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" -msgstr "Número Serial GTE" +msgstr "" #: templates/js/translated/table_filters.js:302 #: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" -msgstr "Número de serie mayor o igual a" +msgstr "" #: templates/js/translated/table_filters.js:305 #: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" -msgstr "Número Serial LTE" +msgstr "" #: templates/js/translated/table_filters.js:306 #: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" -msgstr "Número de serie menor o igual que" +msgstr "" #: templates/js/translated/table_filters.js:309 #: templates/js/translated/table_filters.js:310 #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "Número de serie" +msgstr "" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 msgid "Batch code" -msgstr "Código de lote" +msgstr "" #: templates/js/translated/table_filters.js:325 #: templates/js/translated/table_filters.js:696 msgid "Active parts" -msgstr "Partes activas" +msgstr "" #: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" -msgstr "Mostrar stock para las partes activas" +msgstr "" #: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" -msgstr "Parte es un ensamblado" +msgstr "" #: templates/js/translated/table_filters.js:335 msgid "Is allocated" -msgstr "Está asignado" +msgstr "" #: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" -msgstr "El artículo ha sido asignado" +msgstr "" #: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" -msgstr "Stock disponible para uso" +msgstr "" #: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" -msgstr "Incluye stock en sub-ubicaciones" +msgstr "" #: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" -msgstr "Mostrar artículos de stock que están agotados" +msgstr "" #: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" -msgstr "Mostrar artículos en stock" - -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "En Producción" +msgstr "" #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" -msgstr "Mostrar artículos que están en producción" +msgstr "" #: templates/js/translated/table_filters.js:365 msgid "Include Variants" -msgstr "Incluye Variantes" +msgstr "" #: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" -msgstr "Incluye artículos de stock para partes de variantes" +msgstr "" #: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" -msgstr "Mostrar artículos de stock que están instalados en otro artículo" +msgstr "" #: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" -msgstr "Mostrar artículos que han sido asignados a un cliente" +msgstr "" #: templates/js/translated/table_filters.js:396 #: templates/js/translated/table_filters.js:397 msgid "Stock status" -msgstr "Estado del stock" +msgstr "" #: templates/js/translated/table_filters.js:400 msgid "Has batch code" -msgstr "Tiene código de lote" +msgstr "" #: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" @@ -13204,56 +13470,56 @@ msgstr "" #: templates/js/translated/table_filters.js:414 msgid "Has purchase price" -msgstr "Tiene precio de compra" +msgstr "" #: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" -msgstr "Mostrar artículos de stock que tienen un precio de compra establecido" +msgstr "" #: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" -msgstr "Fecha de vencimiento antes de" +msgstr "" #: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" -msgstr "Fecha de vencimiento después" +msgstr "" #: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" -msgstr "Mostrar artículos de stock que han caducado" +msgstr "" #: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" -msgstr "Mostrar stock que está cerca de caducar" +msgstr "" #: templates/js/translated/table_filters.js:456 msgid "Test Passed" -msgstr "Prueba aprobada" +msgstr "" #: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" -msgstr "Incluye artículos instalados" +msgstr "" #: templates/js/translated/table_filters.js:511 msgid "Build status" -msgstr "Estado de la construcción" +msgstr "" #: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" -msgstr "Incluye partes en subcategorías" +msgstr "" #: templates/js/translated/table_filters.js:713 msgid "Show active parts" -msgstr "Mostrar partes activas" +msgstr "" #: templates/js/translated/table_filters.js:721 msgid "Available stock" -msgstr "Existencias disponibles" +msgstr "" #: templates/js/translated/table_filters.js:729 #: templates/js/translated/table_filters.js:825 msgid "Has Units" -msgstr "Tiene unidades" +msgstr "" #: templates/js/translated/table_filters.js:730 msgid "Part has defined units" @@ -13261,103 +13527,103 @@ msgstr "" #: templates/js/translated/table_filters.js:734 msgid "Has IPN" -msgstr "Tiene IPN" +msgstr "" #: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" -msgstr "La parte tiene un número de parte interno" +msgstr "" #: templates/js/translated/table_filters.js:739 msgid "In stock" -msgstr "En existencia" +msgstr "" #: templates/js/translated/table_filters.js:747 msgid "Purchasable" -msgstr "Comprable" +msgstr "" #: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" -msgstr "Tiene entradas de inventario" +msgstr "" #: templates/js/translated/table_filters.js:821 msgid "Has Choices" -msgstr "Tiene opciones" +msgstr "" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "Mostrar vista de calendario" +msgstr "" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "Mostrar vista de lista" +msgstr "" #: templates/js/translated/tables.js:112 msgid "Display tree view" -msgstr "Mostrar vista de árbol" +msgstr "" #: templates/js/translated/tables.js:130 msgid "Expand all rows" -msgstr "Ampliar todas las filas" +msgstr "" #: templates/js/translated/tables.js:136 msgid "Collapse all rows" -msgstr "Contraer todas las filas" +msgstr "" #: templates/js/translated/tables.js:186 msgid "Export Table Data" -msgstr "Exportar datos de tabla" +msgstr "" #: templates/js/translated/tables.js:190 msgid "Select File Format" -msgstr "Seleccionar formato de archivo" +msgstr "" #: templates/js/translated/tables.js:529 msgid "Loading data" -msgstr "Cargando datos" +msgstr "" #: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "filas por página" +msgstr "" #: templates/js/translated/tables.js:537 msgid "Showing all rows" -msgstr "Mostrar todas las filas" +msgstr "" #: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "Mostrando" +msgstr "" #: templates/js/translated/tables.js:539 msgid "to" -msgstr "para" +msgstr "" #: templates/js/translated/tables.js:539 msgid "of" -msgstr "de" +msgstr "" #: templates/js/translated/tables.js:539 msgid "rows" -msgstr "filas" +msgstr "" #: templates/js/translated/tables.js:546 msgid "No matching results" -msgstr "No se encontraron resultados" +msgstr "" #: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" -msgstr "Ocultar/Mostrar paginación" +msgstr "" #: templates/js/translated/tables.js:555 msgid "Toggle" -msgstr "Alternar" +msgstr "" #: templates/js/translated/tables.js:558 msgid "Columns" -msgstr "Columnas" +msgstr "" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "Todo" +msgstr "" #: templates/navbar.html:45 msgid "Buy" @@ -13463,12 +13729,16 @@ msgstr "Proveedor SSO inválido" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" -msgstr "Estás a punto de usar tu cuenta de %(provider_name)s para iniciar sesión en\n" -"%(site_name)s.
Como paso final, por favor completa el siguiente formulario:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" +msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 msgid "Provider has not been configured" @@ -13546,27 +13816,27 @@ msgstr "Sí" msgid "No" msgstr "No" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "Usuarios" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "Seleccione qué usuarios están asignados a este grupo" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "Información personal" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "Permisos" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "Fechas importantes" @@ -13610,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "Permiso establecido" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "Grupo" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "Vista" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "Permiso para ver artículos" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "Permiso para añadir artículos" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "Cambiar" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Permisos para editar artículos" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "Permiso para eliminar artículos" diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/InvenTree/locale/es_MX/LC_MESSAGES/django.po index f1b74f18f6..21f40562ac 100644 --- a/InvenTree/locale/es_MX/LC_MESSAGES/django.po +++ b/InvenTree/locale/es_MX/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-16 11:14+0000\n" +"POT-Creation-Date: 2024-02-15 00:38+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,11 +18,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "" @@ -44,7 +44,7 @@ msgstr "" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "" @@ -52,18 +52,18 @@ msgstr "" msgid "Enter date" msgstr "" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -124,154 +124,286 @@ msgstr "" msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -282,71 +414,72 @@ msgstr "" msgid "Link" msgstr "" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -362,25 +495,25 @@ msgstr "" msgid "Name" msgstr "" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -399,274 +532,149 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "" -"Your account has been created.\n" -"\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "" @@ -715,7 +723,7 @@ msgstr "" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -878,10 +886,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -930,16 +934,16 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -951,18 +955,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -972,16 +976,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -992,27 +996,27 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1020,27 +1024,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1051,7 +1055,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1059,8 +1063,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1084,144 +1088,144 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1230,52 +1234,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1285,15 +1289,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1317,41 +1321,41 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1363,89 +1367,89 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1458,32 +1462,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1493,159 +1497,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1771,12 +1804,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1809,8 +1842,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1832,7 +1865,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1860,7 +1893,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1873,9 +1906,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1889,7 +1922,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1988,11 +2021,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2046,1410 +2079,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3457,101 +3511,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3561,31 +3615,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3623,6 +3677,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3661,184 +3775,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3850,11 +3964,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3865,67 +3979,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3940,58 +4054,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -4001,27 +4115,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4083,10 +4197,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4101,7 +4215,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4346,7 +4460,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4448,7 +4562,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4487,6 +4601,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4503,7 +4621,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4527,7 +4645,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4541,8 +4659,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4559,7 +4677,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4572,7 +4791,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4586,7 +4805,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4595,192 +4814,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4790,325 +5005,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5292,8 +5507,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5512,13 +5727,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5526,20 +5741,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5564,11 +5779,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5578,33 +5793,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5617,7 +5825,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5640,51 +5848,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5693,380 +5901,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6078,322 +6281,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6489,197 +6688,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6840,7 +7039,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7132,10 +7331,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7250,7 +7445,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7404,11 +7599,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7466,7 +7665,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7565,6 +7764,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7577,6 +7788,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7645,6 +7857,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7665,7 +7893,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7737,84 +7965,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7859,70 +8115,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7952,103 +8222,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8089,9 +8359,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8115,12 +8385,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8146,32 +8416,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8180,56 +8450,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8239,56 +8509,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8300,12 +8570,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8335,225 +8605,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8561,157 +8831,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8848,7 +9122,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8914,7 +9188,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9415,11 +9689,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9569,7 +9838,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9590,7 +9859,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10046,7 +10315,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10126,7 +10395,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10255,7 +10524,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10624,7 +10893,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10644,26 +10913,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10695,7 +10964,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10707,364 +10976,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11429,10 +11698,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11873,6 +12138,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12345,7 +12614,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12510,7 +12779,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12526,7 +12795,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12738,7 +13007,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13167,10 +13436,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13465,11 +13730,16 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format msgid "" -"You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +"\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13548,27 +13818,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13612,34 +13882,34 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/fa/LC_MESSAGES/django.po b/InvenTree/locale/fa/LC_MESSAGES/django.po index 794f62d182..f49d3b57d0 100644 --- a/InvenTree/locale/fa/LC_MESSAGES/django.po +++ b/InvenTree/locale/fa/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Persian\n" "Language: fa_IR\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "Address e API peida nashod" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "کاربر سطح دسترسی نمایش این مدل را ندارد" @@ -43,7 +43,7 @@ msgstr "تعداد افزوده شده اشتباه است" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "جزئیات خطا را می توان در پنل مدیریت پیدا کرد" @@ -51,18 +51,18 @@ msgstr "جزئیات خطا را می توان در پنل مدیریت پیدا msgid "Enter date" msgstr "تاریخ را وارد کنید" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "آدرس ایمیل اصلی ارائه شده معتبر نیست." msgid "The provided email domain is not approved." msgstr "دامنه ایمیل ارائه شده تایید نشده است." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "خطا در اتصال" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "سرور با کد وضعیت نامعتبر پاسخ داد" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "یک استثنا رخ داده است" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "سرور با مقدار طول محتوا نامعتبر پاسخ داد" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "اندازه عکس بسیار بزرگ است" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "" msgid "Link" msgstr "" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "" msgid "Name" msgstr "" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "فایل‌های داده" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "فایل را برای بارگذاری انتخاب کنید" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "این نوع فایل پشتیبانی نمی‌شود" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "حجم فایل خیلی بزرگ است" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "هیچ ستونی در فایل یافت نشد" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "هیچ ردیف داده ای در فایل یافت نشد" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "هیچ ردیف داده ای ارائه نشده است" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "هیچ ستون داده ای ارائه نشده است" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "ستون مورد نیاز وجود ندارد: \"{name}\"" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "ستون تکراری: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "آدرس فایل تصویری از راه دور" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "" @@ -712,7 +722,7 @@ msgstr "" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "مرجع سفارش فروش" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "منبع محل" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "مقصد" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1985,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "هیچ عملیات کاربر-محوری، مشخص نشده است" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11870,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/fi/LC_MESSAGES/django.po b/InvenTree/locale/fi/LC_MESSAGES/django.po index fabe6c8f12..60d56429bf 100644 --- a/InvenTree/locale/fi/LC_MESSAGES/django.po +++ b/InvenTree/locale/fi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:42\n" "Last-Translator: \n" "Language-Team: Finnish\n" "Language: fi_FI\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API-rajapintaa ei löydy" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Käyttäjän oikeudet eivät riitä kohteen tarkastelemiseen" @@ -43,7 +43,7 @@ msgstr "" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Virheen tiedot löytyvät hallintapaneelista" @@ -51,18 +51,18 @@ msgstr "Virheen tiedot löytyvät hallintapaneelista" msgid "Enter date" msgstr "Anna päivämäärä" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Annettu ensisijainen sähköpostiosoite ei kelpaa." msgid "The provided email domain is not approved." msgstr "Annetun sähköpostiosoitteen verkkotunnusta ei hyväksytä." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Annettu määrä on virheellinen" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Tyhjä sarjanumero" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Duplikaatti sarjanumero" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Sarjanumeroita ei löytynyt" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Yhteysvirhe" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Palvelin vastasi virheellisellä tilakoodilla" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Kuva on liian iso" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Kuvan lataus ylitti enimmäiskoon" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Etäpalvelin palautti tyhjän vastauksen" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Annettu URL ei ole kelvollinen kuvatiedosto" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "tšekki" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "tanska" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "saksa" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "kreikka" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "englanti" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "espanja" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "espanja (Meksiko)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "farsi / persia" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "suomi" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "ranska" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "heprea" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "unkari" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "italia" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "japani" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "korea" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "hollanti" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "norja" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "puola" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "portugali" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "portugali (Brasilia)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "venäjä" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "slovenia" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "ruotsi" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "thai" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "turkki" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "vietnam" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "Sähköposti" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Metatietojen tulee olla python dict objekti" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Liitännäisen metadata" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "JSON metadatakenttä, ulkoisten liitännäisten käyttöön" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Virheellisesti muotoiltu malli" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Viitekenttä ei voi olla tyhjä" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Viitenumero on liian suuri" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Puuttuva tiedosto" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Puuttuva ulkoinen linkki" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Liite" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Valitse liitettävä tiedosto" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Valitse liitettävä tiedosto" msgid "Link" msgstr "Linkki" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Linkki ulkoiseen URLiin" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Kommentti" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Tiedoston kommentti" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Käyttäjä" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "latauspäivä" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Tiedoston nimi ei saa olla tyhjä" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Virheellinen liitteen hakemisto" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Tiedostonimi sisältää kielletyn merkin '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Tiedostonimen pääte puuttuu" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Samanniminen liite on jo olemassa" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Virhe tiedoston uudelleennimeämisessä" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Virheellinen valinta" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Virheellinen valinta" msgid "Name" msgstr "Nimi" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "Nimi" msgid "Description" msgstr "Kuvaus" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Kuvaus (valinnainen)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Polku" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Viivakoodin Tiedot" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Palvelinvirhe" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Täytyy olla kelvollinen luku" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuutta" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Valitse valuutta käytettävissä olevista vaihtoehdoista" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Tiedostonimi" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Virheellinen arvo" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Datatiedosto" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Valitse lähetettävä datatiedosto" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Tiedostotyyppiä ei tueta" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Tiedosto on liian suuri" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Datarivejä ei annettu" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Datasarakkeita ei annettu" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Vaadittu sarake puuttuu: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplikaatti sarake: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "Kuvatiedoston URL" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Kuvien lataaminen ei ole käytössä" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "tšekki" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "tanska" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "saksa" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "kreikka" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "englanti" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "espanja" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "espanja (Meksiko)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "farsi / persia" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "suomi" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "ranska" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "heprea" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "unkari" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "italia" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "japani" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "korea" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "hollanti" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "norja" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "puola" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "portugali" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "portugali (Brasilia)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "venäjä" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "slovenia" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "ruotsi" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "thai" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "turkki" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "vietnam" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "" @@ -712,7 +722,7 @@ msgstr "Palautettu" msgid "In Progress" msgstr "Kesken" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "Tietoja InvenTree:stä" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "Saatavilla" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "" msgid "Part" msgstr "Osa" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Ulkoinen linkki" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "Määrä" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "Varastotuote" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Sarjanumerot" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "Sijainti" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "Tila" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "Ei sallittu" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "Prioriteetti" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1985,11 +2020,11 @@ msgstr "Liitteet" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "{name.title()} Tiedosto" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "Päivitetty" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Viimeisimmän päivityksen aikaleima" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "Ei ryhmää" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "Verkkotunnus ei saa olla tyhjä." -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Virheellinen verkkotunnus: {domain}" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "Uudelleenkäynnistys vaaditaan" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Yrityksen nimi" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "Yrityksen sisäinen nimi" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Oletusvaluutta" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "päivää" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "Automaattinen varmuuskopionti" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "Ota käyttöön tietokannan ja mediatiedostojen automaattinen varmuuskopiointi" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "Automaattisen varmuuskopioinnin aikaväli" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Viivakoodituki" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Komponentti" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Ostettavissa" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Seurattavissa" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "Sisäiset hinnat" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "Sisäisen hinnan ohitus" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Sivun koko" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "Täytä sarjanumerot automaattisesti" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "Salli salasananpalautus" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "Salli rekisteröinti" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "Salli SSO" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "Salli SSO kirjautumissivuilla" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "Salli SSO rekisteröinti" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "Sähköposti vaaditaan" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "Sähköpostiosoite kahdesti" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "Salasana kahdesti" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "Sallitut verkkotunnukset" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "Pakota MFA" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "Näytä uutiset" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "Näytä uutiset kotisivulla" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Hinta" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "Aktiivinen" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "Salaisuus" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "Isäntä" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Otsikko" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "Julkaistu" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "Julkaisija" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "Yhteenveto" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "Kuva" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "Kuvatiedosto" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "Edellinen vaihe" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "Yrityksen kuvaus" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "Sivusto" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "Yrityksen sivuston URL" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Puhelinnumero" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Kontakti" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "on asiakas" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "on toimittaja" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "on valmistaja" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Yritys" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "Valmistaja" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Valitse valmistaja" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "Valitse valmistaja" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "Valmistajan osanumero" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Arvo" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "Toimittaja" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Valitse toimittaja" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "Toimittajan varastonimike" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "Valitse valmistajan osa" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "Muistiinpano" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "Asiakas" msgid "Uses default currency" msgstr "Käyttää oletusvaluuttaa" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4112,7 +4228,7 @@ msgstr "Puhelin" #: company/templates/company/company_base.html:205 #: part/templates/part/part_base.html:528 msgid "Remove Image" -msgstr "Poista kuva" +msgstr "" #: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "Yritykset" msgid "New Company" msgstr "Uusi yritys" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "Käytössä" @@ -4524,7 +4644,7 @@ msgstr "Korkeus [mm]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "Suodattimet" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "QR-koodi" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "Hinta yhteensä" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "Tilauksen valuutta" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "Tilauksen viite" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "Asiakkaan viite " -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "Vastaanotettu" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "Seurantakoodi" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "Laskunumero" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Viivakoodi" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Avainsanat" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "Oletus avainsanat" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Kuvake" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "Kuvake (valinnainen)" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "Kategoria" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "Päivämäärä" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "Muut merkinnät" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Raportti" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "Luo raportti" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "Muokkaa" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "Avain" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Sarjanumero" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Poista" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10344,11 +10615,11 @@ msgstr "" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" -msgstr "Kaikki liitteet poistetaan" +msgstr "" #: templates/js/translated/attachment.js:129 msgid "Delete Attachments" -msgstr "Poista liitteet" +msgstr "" #: templates/js/translated/attachment.js:205 msgid "Delete attachments" @@ -10360,11 +10631,11 @@ msgstr "" #: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "Liitteitä ei löytynyt" +msgstr "" #: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "Muokkaa liitettä" +msgstr "" #: templates/js/translated/attachment.js:346 msgid "Upload Date" @@ -10372,11 +10643,11 @@ msgstr "" #: templates/js/translated/attachment.js:366 msgid "Edit attachment" -msgstr "Muokkaa liitettä" +msgstr "" #: templates/js/translated/attachment.js:374 msgid "Delete attachment" -msgstr "Poista liite" +msgstr "" #: templates/js/translated/barcode.js:43 msgid "Scan barcode data here using barcode scanner" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,370 +10975,370 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" -msgstr "Valitse" +msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" -msgstr "Edistyminen" +msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" #: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "Lisää valmistaja" +msgstr "" #: templates/js/translated/company.js:111 #: templates/js/translated/company.js:213 @@ -11081,7 +11352,7 @@ msgstr "" #: templates/js/translated/company.js:201 #: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "Lisää toimittaja" +msgstr "" #: templates/js/translated/company.js:243 #: templates/js/translated/purchase_order.js:352 @@ -11098,7 +11369,7 @@ msgstr "" #: templates/js/translated/company.js:465 msgid "Add new Company" -msgstr "Lisää uusi yritys" +msgstr "" #: templates/js/translated/company.js:536 msgid "Parts Supplied" @@ -11114,12 +11385,12 @@ msgstr "" #: templates/js/translated/company.js:609 msgid "Create New Contact" -msgstr "Luo uusi yhteystieto" +msgstr "" #: templates/js/translated/company.js:625 #: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "Muokkaa yhteystietoa" +msgstr "" #: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" @@ -11132,23 +11403,23 @@ msgstr "" #: templates/js/translated/company.js:676 msgid "Delete Contacts" -msgstr "Poista yhteystiedot" +msgstr "" #: templates/js/translated/company.js:707 msgid "No contacts found" -msgstr "Yhteystietoja ei löytynyt" +msgstr "" #: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "Puhelinnumero" +msgstr "" #: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "Sähköposti" +msgstr "" #: templates/js/translated/company.js:752 msgid "Delete Contact" -msgstr "Poista yhteystieto" +msgstr "" #: templates/js/translated/company.js:849 msgid "Create New Address" @@ -11296,7 +11567,7 @@ msgstr "" #: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "Päivitetty viimeksi" +msgstr "" #: templates/js/translated/company.js:1830 msgid "Edit price break" @@ -11309,16 +11580,16 @@ msgstr "" #: templates/js/translated/filters.js:186 #: templates/js/translated/filters.js:672 msgid "true" -msgstr "tosi" +msgstr "" #: templates/js/translated/filters.js:190 #: templates/js/translated/filters.js:673 msgid "false" -msgstr "epätosi" +msgstr "" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "Valitse suodatin" +msgstr "" #: templates/js/translated/filters.js:437 msgid "Print Labels" @@ -11326,7 +11597,7 @@ msgstr "" #: templates/js/translated/filters.js:441 msgid "Print Reports" -msgstr "Tulosta raportteja" +msgstr "" #: templates/js/translated/filters.js:453 msgid "Download table data" @@ -11346,7 +11617,7 @@ msgstr "" #: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "Luo suodatin" +msgstr "" #: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 #: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 @@ -11408,28 +11679,24 @@ msgstr "" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "KYLLÄ" +msgstr "" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "EI" +msgstr "" #: templates/js/translated/helpers.js:93 msgid "True" -msgstr "Tosi" +msgstr "" #: templates/js/translated/helpers.js:94 msgid "False" -msgstr "Epätosi" +msgstr "" #: templates/js/translated/index.js:104 msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11481,7 +11748,7 @@ msgstr "" #: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 #: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "Peruuta" +msgstr "" #: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 #: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 @@ -11495,7 +11762,7 @@ msgstr "" #: templates/js/translated/modals.js:445 msgid "Waiting for server..." -msgstr "Odotetaan palvelinta..." +msgstr "" #: templates/js/translated/modals.js:596 msgid "Show Error Information" @@ -11549,23 +11816,23 @@ msgstr "" #: templates/js/translated/notification.js:52 msgid "Age" -msgstr "Ikä" +msgstr "" #: templates/js/translated/notification.js:65 msgid "Notification" -msgstr "Ilmoitus" +msgstr "" #: templates/js/translated/notification.js:224 msgid "Mark as unread" -msgstr "Merkitse lukemattomaksi" +msgstr "" #: templates/js/translated/notification.js:228 msgid "Mark as read" -msgstr "Merkitse luetuksi" +msgstr "" #: templates/js/translated/notification.js:254 msgid "No unread notifications" -msgstr "Ei lukemattomia ilmoituksia" +msgstr "" #: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" @@ -11670,19 +11937,19 @@ msgstr "" #: templates/js/translated/part.js:430 msgid "Create Part" -msgstr "Luo osa" +msgstr "" #: templates/js/translated/part.js:432 msgid "Create another part after this one" -msgstr "Luo toinen osa tämän jälkeen" +msgstr "" #: templates/js/translated/part.js:433 msgid "Part created successfully" -msgstr "Osan luonti onnistui" +msgstr "" #: templates/js/translated/part.js:461 msgid "Edit Part" -msgstr "Muokkaa osaa" +msgstr "" #: templates/js/translated/part.js:463 msgid "Part edited" @@ -11718,7 +11985,7 @@ msgstr "" #: templates/js/translated/part.js:557 msgid "Delete Part" -msgstr "Poista osa" +msgstr "" #: templates/js/translated/part.js:593 msgid "You are subscribed to notifications for this item" @@ -11868,7 +12135,11 @@ msgstr "" #: templates/js/translated/part.js:2235 msgid "Set category" -msgstr "Aseta kategoria" +msgstr "" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" #: templates/js/translated/part.js:2288 msgid "parts" @@ -12187,11 +12458,11 @@ msgstr "" #: templates/js/translated/purchase_order.js:1224 msgid "Add serial numbers" -msgstr "Lisää sarjanumeroita" +msgstr "" #: templates/js/translated/purchase_order.js:1276 msgid "Serials" -msgstr "Sarjanumerot" +msgstr "" #: templates/js/translated/purchase_order.js:1301 msgid "Order Code" @@ -12212,7 +12483,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:1398 msgid "Scan Item Barcode" -msgstr "Skannaa tuotteen viivakoodi" +msgstr "" #: templates/js/translated/purchase_order.js:1399 msgid "Scan barcode on incoming item (must not match any existing stock items)" @@ -12302,7 +12573,7 @@ msgstr "" #: templates/js/translated/return_order.js:60 #: templates/js/translated/sales_order.js:86 msgid "Add Customer" -msgstr "Lisää asiakas" +msgstr "" #: templates/js/translated/return_order.js:134 msgid "Create Return Order" @@ -12335,14 +12606,14 @@ msgstr "" #: templates/js/translated/return_order.js:300 #: templates/js/translated/sales_order.js:788 msgid "Invalid Customer" -msgstr "Virheellinen asiakas" +msgstr "" #: templates/js/translated/return_order.js:562 msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12457,7 +12728,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1052 msgid "Invoice" -msgstr "Lasku" +msgstr "" #: templates/js/translated/sales_order.js:1219 msgid "Add Shipment" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12661,11 +12932,11 @@ msgstr "" #: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "Syötä sarjanumero" +msgstr "" #: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "Syötä sarjanumero" +msgstr "" #: templates/js/translated/stock.js:634 msgid "No matching serial number" @@ -12713,7 +12984,7 @@ msgstr "" #: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "Siirrä" +msgstr "" #: templates/js/translated/stock.js:1031 msgid "Count Stock" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13120,7 +13391,7 @@ msgstr "" #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "Sarjanumero" +msgstr "" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "Tuotannossa" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13356,7 +13623,7 @@ msgstr "" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "Kaikki" +msgstr "" #: templates/navbar.html:45 msgid "Buy" @@ -13462,10 +13729,15 @@ msgstr "Virheellinen SSO tarjoaja" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "Kyllä" msgid "No" msgstr "Ei" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "Käyttäjät" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "Valitse mitkä käyttäjät on määritetty tähän ryhmään" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "Henkilökohtaiset tiedot" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "Oikeudet" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "Ryhmä" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "Näytä" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "Oikeus tarkastella kohteita" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "Oikeus lisätä kohteita" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "Muuta" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Oikeus muokata kohteita" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "Oikeus poistaa kohteita" diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po index 745e92d36b..a2b1660891 100644 --- a/InvenTree/locale/fr/LC_MESSAGES/django.po +++ b/InvenTree/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:31\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:42\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "Point de terminaison de l'API introuvable" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "L'utilisateur n'a pas la permission de voir ce modèle" @@ -43,7 +43,7 @@ msgstr "Quantité fournie invalide" msgid "Invalid quantity supplied ({exc})" msgstr "Quantité fournie invalide ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Les détails de l'erreur peuvent être trouvées dans le panneau d'administration" @@ -51,18 +51,18 @@ msgstr "Les détails de l'erreur peuvent être trouvées dans le panneau d'admin msgid "Enter date" msgstr "Entrer la date" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "L'adresse e-mail principale fournie n'est pas valide." msgid "The provided email domain is not approved." msgstr "Le domaine e-mail fourni n'est pas approuvé." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "L'enregistrement est désactivé." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Quantité fournie invalide" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Chaîne de numéro de série vide" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Numéro de série en doublon" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Plage de groupe non valide : {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "La plage de groupe {group} dépasse la quantité autorisée ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Séquence de groupe invalide : {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Aucun numéro de série trouvé" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Le nombre de numéros de série uniques ({len(serials)}) doit correspondre à la quantité ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Retirer les balises HTML de cette valeur" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Erreur de connexion" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Le serveur a répondu avec un code de statut invalide" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Une erreur est survenue" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Le serveur a répondu avec une valeur de longueur de contenu invalide" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Image trop volumineuse" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "La taille de l'image dépasse la taille maximale autorisée" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Le serveur distant a renvoyé une réponse vide" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "L'URL fournie n'est pas un fichier image valide" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Se connecter à l'application" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Bulgare" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Tchèque" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Danois" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Allemand" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Grec" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Anglais" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Espagnol" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Espagnol (Mexique)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Farsi / Perse" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Finnois" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Français" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Hébreu" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Hongrois" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Italien" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japonais" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Coréen" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Néerlandais" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norvégien" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Polonais" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugais" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugais (Brésilien)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Russe" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Slovénien" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Serbe" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Suédois" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Thaïlandais" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Turc" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnamien" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Chinois (Simplifié)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Chinois (Traditionnel)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "E-mail" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Les metadata doivent être un objet python de type \"dict\"" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Métadonnées de l'Extension" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "Champs metadata JSON, pour plugins tiers" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Modèle mal formaté" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Clé de format inconnu spécifiée" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Clé de format requise manquante" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Le champ de référence ne peut pas être vide" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "La référence doit correspondre au modèle requis" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Le numéro de référence est trop grand" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Fichier manquant" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Lien externe manquant" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Pièce jointe" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Sélectionnez un fichier à joindre" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Sélectionnez un fichier à joindre" msgid "Link" msgstr "Lien" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Lien vers une url externe" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Commentaire" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Commentaire du fichier" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Utilisateur" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "date de chargement" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Le nom de fichier ne doit pas être vide" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Répertoire de pièce jointe invalide" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Le nom de fichier contient le caractère illégal '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Extension manquante du nom de fichier" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Une pièce jointe avec ce nom de fichier existe déjà" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Erreur lors du renommage du fichier" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "Les noms dupliqués ne peuvent pas exister sous le même parent" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Choix invalide" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Choix invalide" msgid "Name" msgstr "Nom" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,273 +531,149 @@ msgstr "Nom" msgid "Description" msgstr "Description" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Description (facultative)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "parent" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Chemin d'accès" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Notes Markdown (option)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Données du code-barres" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Données de code-barres tierces" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Hash du code-barre" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Hachage unique des données du code-barres" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Code-barres existant trouvé" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Erreur serveur" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Une erreur a été loguée par le serveur." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Doit être un nombre valide" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Devise" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Sélectionnez la devise à partir des options disponibles" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "Vous n'avez pas la permission de modifier ce rôle utilisateur." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "Seuls les super-utilisateurs peuvent créer de nouveaux utilisateurs" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" -msgstr "Bienvenue sur {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." +msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." -msgstr "Votre compte a été créé.\n\n" -"Veuillez utiliser la fonction de réinitialisation du mot de passe pour avoir accès (à https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" +msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Nom du fichier" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Valeur non valide" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Fichier de données" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Sélectionnez le fichier de données à envoyer" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Format de fichier non supporté" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Fichier trop volumineux" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Pas de colonnes trouvées dans le fichier" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Par de lignes de données trouvées dans le fichier" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Pas de lignes de données fournies" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Pas de colonne de données fournie" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Colonne requise manquante : {name}" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Colonne duliquée : '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "Images distantes" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "URL du fichier image distant" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Le téléchargement des images depuis une URL distante n'est pas activé" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "Bulgare" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Tchèque" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Danois" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Allemand" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Grec" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Anglais" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Espagnol" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Espagnol (Mexique)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Farsi / Perse" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Finnois" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Français" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Hébreu" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Hindi" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Hongrois" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Italien" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japonais" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Coréen" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Néerlandais" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norvégien" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Polonais" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugais" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugais (Brésilien)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Russe" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Slovénien" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "Serbe" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Suédois" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Thaïlandais" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Turc" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnamien" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Chinois (Simplifié)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Chinois (Traditionnel)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Échec de la vérification du processus d'arrière-plan" @@ -713,7 +722,7 @@ msgstr "Retourné" msgid "In Progress" msgstr "En Cours" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -876,10 +885,6 @@ msgstr "Refuser" msgid "Unknown database" msgstr "Base de données inconnue" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Unité invalide" @@ -928,16 +933,16 @@ msgstr "À propos d'InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "La construction doit être annulée avant de pouvoir être supprimée" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "Consommable" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -949,18 +954,18 @@ msgstr "Facultatif" msgid "Tracked" msgstr "Suivi" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "Allouée" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -970,16 +975,16 @@ msgstr "Allouée" msgid "Available" msgstr "Disponible" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Ordre de Fabrication" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -990,27 +995,27 @@ msgstr "Ordre de Fabrication" msgid "Build Orders" msgstr "Ordres de Fabrication" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Choix invalide pour la fabrication parente" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "La pièce de commande de construction ne peut pas être changée" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Référence de l' Ordre de Fabrication" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1018,27 +1023,27 @@ msgstr "Référence de l' Ordre de Fabrication" msgid "Reference" msgstr "Référence" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "Brève description de la fabrication (optionnel)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Fabrication parente" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "BuildOrder associé a cette fabrication" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1049,7 +1054,7 @@ msgstr "BuildOrder associé a cette fabrication" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1057,8 +1062,8 @@ msgstr "BuildOrder associé a cette fabrication" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1082,144 +1087,144 @@ msgstr "BuildOrder associé a cette fabrication" msgid "Part" msgstr "Pièce" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Sélectionnez la pièce à construire" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Bon de commande de référence" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Commande de vente à laquelle cette construction est allouée" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Emplacement d'origine" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Sélectionner l'emplacement à partir duquel le stock doit être pris pour cette construction (laisser vide pour prendre à partir de n'importe quel emplacement de stock)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Emplacement cible" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Sélectionnez l'emplacement où les éléments complétés seront stockés" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Quantité a fabriquer" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Nombre de stock items à construire" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Articles terminés" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Nombre d'articles de stock qui ont été terminés" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "État de la construction" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Code de statut de construction" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Code de lot" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Code de lot pour ce build output" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Date de création" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Date d'achèvement cible" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Date cible pour l'achèvement de la construction. La construction sera en retard après cette date." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Date d'achèvement" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "achevé par" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Émis par" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Utilisateur ayant émis cette commande de construction" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Responsable" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "Utilisateur ou groupe responsable de cet ordre de construction" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Lien Externe" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "Priorité de fabrication" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "Priorité de cet ordre de fabrication" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1228,52 +1233,52 @@ msgstr "Priorité de cet ordre de fabrication" msgid "Project Code" msgstr "Code du projet" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "Code de projet pour cet ordre de construction" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "La commande de construction {build} a été effectuée" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "Une commande de construction a été effectuée" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Pas d'ordre de production défini" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "L'ordre de production a déjà été réalisé" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "L'ordre de production de correspond pas à l'ordre de commande" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "La quantité doit être supérieure à zéro" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "La quantité ne peut pas être supérieure à la quantité de sortie" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "Création de l'objet" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1283,15 +1288,15 @@ msgstr "Création de l'objet" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1315,41 +1320,41 @@ msgstr "Création de l'objet" msgid "Quantity" msgstr "Quantité" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "Quantité requise pour la commande de construction" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "L'élément de construction doit spécifier une sortie de construction, la pièce maîtresse étant marquée comme objet traçable" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "La quantité allouée ({q}) ne doit pas excéder la quantité disponible ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "L'article de stock est suralloué" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "La quantité allouée doit être supérieure à zéro" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "La quantité doit être de 1 pour stock sérialisé" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "L'article de stock sélectionné ne correspond pas à la ligne BOM" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1361,89 +1366,89 @@ msgstr "L'article de stock sélectionné ne correspond pas à la ligne BOM" msgid "Stock Item" msgstr "Article en stock" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Stock d'origine de l'article" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Quantité de stock à allouer à la construction" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Installer dans" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Stock de destination de l'article" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "Sortie d'assemblage" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "L'ordre de production ne correspond pas à l'ordre parent" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "La pièce en sortie ne correspond pas à la pièce de l'ordre de construction" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "Cet ordre de production a déjà été produit" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "Cet ordre de production n'est pas complètement attribué" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "Entrer la quantité désiré pour la fabrication" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "Quantité entière requise pour les pièces à suivre" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Quantité entière requise, car la facture de matériaux contient des pièces à puce" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Numéros de série" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "Entrer les numéros de séries pour la fabrication" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "Allouer automatiquement les numéros de série" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "Affecter automatiquement les éléments requis avec les numéros de série correspondants" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "Les numéros de série suivants existent déjà, ou sont invalides" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "Une liste d'ordre de production doit être fourni" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1456,32 +1461,32 @@ msgstr "Une liste d'ordre de production doit être fourni" msgid "Location" msgstr "Emplacement" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "Emplacement du stock pour les sorties épuisées" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "Ignorer les allocations" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "Abandonner les allocations de stock pour les sorties abandonnées" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "Motif de l'élimination des produits de construction(s)" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "Emplacement des ordres de production achevés" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1491,159 +1496,188 @@ msgstr "Emplacement des ordres de production achevés" msgid "Status" msgstr "État" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "Accepter l'allocation incomplète" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "Compléter les sorties si le stock n'a pas été entièrement alloué" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "Supprimer le stock alloué" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "Soustraire tout stock qui a déjà été alloué à cette construction" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "Retirer les sorties incomplètes" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "Supprimer toutes les sorties de construction qui n'ont pas été complétées" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "Non permis" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "Accepter comme consommé par cet ordre de construction" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "Désaffecter avant de terminer cette commande de fabrication" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "Stock suralloué" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Comment voulez-vous gérer les articles en stock supplémentaires assignés à l'ordre de construction" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "Certains articles de stock ont été suralloués" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "Accepter les non-alloués" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Accepter les articles de stock qui n'ont pas été complètement alloués à cette ordre de production" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Le stock requis n'a pas encore été totalement alloué" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "Accepter les incomplèts" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "Accepter que tous les ordres de production n'aient pas encore été achevés" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "La quantité nécessaire n'a pas encore été complétée" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "L'ordre de production a des sorties incomplètes" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "Chaîne d'assemblage" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "Sortie d'assemblage" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "La sortie de la construction doit pointer vers la même construction" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "Élément de la ligne de construction" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part doit pointer sur la même pièce que l'ordre de construction" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "L'article doit être en stock" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantité disponible ({q}) dépassée" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "La sortie de construction doit être spécifiée pour l'allocation des pièces suivies" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "La sortie de la construction ne peut pas être spécifiée pour l'allocation des pièces non suivies" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "Les articles d'allocation doivent être fournis" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Emplacement de stock où les pièces doivent être fournies (laissez vide pour les prendre à partir de n'importe quel emplacement)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "Emplacements exclus" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "Exclure les articles de stock de cet emplacement sélectionné" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "Stock interchangeable" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Les articles de stock à plusieurs emplacements peuvent être utilisés de manière interchangeable" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "Stock de substitution" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "Autoriser l'allocation de pièces de remplacement" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "Objets Optionnels" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "Affecter des éléments de nomenclature facultatifs à l'ordre de fabrication" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "Article du BOM" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "En Commande" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "Stock requis pour la commande de construction" @@ -1769,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Le stock n'a pas été entièrement alloué à cet ordre de construction" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1807,8 +1841,8 @@ msgid "Completed Outputs" msgstr "Sorties de Construction terminées" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1830,21 +1864,21 @@ msgid "Issued By" msgstr "Émis par" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "Priorité" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "Supprimer l'ordre de construction" +msgstr "" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "Génération du QR Code de commande" +msgstr "" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "Lier le code-barres à l'ordre de fabrication" +msgstr "" #: build/templates/build/detail.html:15 msgid "Build Details" @@ -1858,7 +1892,7 @@ msgstr "Stock d'origine" msgid "Stock can be taken from any available location." msgstr "Le stock peut être pris à partir de n'importe quel endroit disponible." -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "Destination" @@ -1871,9 +1905,9 @@ msgstr "Stockage de destination non défini" msgid "Allocated Parts" msgstr "Pièces allouées" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1887,7 +1921,7 @@ msgstr "Lot" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "Créé le" @@ -1986,13 +2020,13 @@ msgstr "Pieces jointes" msgid "Build Notes" msgstr "Notes de construction" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" -msgstr "Allocation terminée" +msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" -msgstr "Toutes les lignes ont été entièrement attribuées" +msgstr "" #: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" @@ -2044,1410 +2078,1431 @@ msgstr "{name.title()} Fichier" msgid "Select {name} file to upload" msgstr "Sélectionner le fichier {name} à uploader" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "Mise à jour" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Date de la dernière mise à jour" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "Code projet unique" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "Description du projet" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "Utilisateur ou groupe responsable de ce projet" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "Clé du paramètre (doit être unique - insensible à la casse)" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "Valeur du paramètre" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "La valeur choisie n'est pas une option valide" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "La valeur doit être une valeur booléenne" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "La valeur doit être un nombre entier" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "La chaîne de caractères constituant la clé doit être unique" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "Pas de groupe" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "Un domaine vide n'est pas autorisé." -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Nom de domaine invalide : {domain}" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "Pas de plugin" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "Redémarrage nécessaire" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "Un paramètre a été modifié, ce qui nécessite un redémarrage du serveur" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "Migration en attente" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "Nombre de migrations de base de données en attente" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "Nom de l'instance du serveur" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "Chaîne de caractères descriptive pour l'instance serveur" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "Utiliser le nom de l'instance" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "Utiliser le nom de l’instance dans la barre de titre" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "Limiter l'affichage de `about`" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "Afficher la modale `about` uniquement aux super-utilisateurs" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Nom de la société" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "Nom de société interne" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "URL de base" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "URL de base pour l'instance serveur" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Devise par défaut" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "Sélectionnez la devise de base pour les calculs de prix" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "Intervalle de mise à jour des devises" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "Fréquence de mise à jour des taux de change (définir à zéro pour désactiver)" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "jours" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "Plugin de mise à jour de devise" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "Plugin de mise à jour des devises à utiliser" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "Télécharger depuis l'URL" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "Autoriser le téléchargement d'images distantes et de fichiers à partir d'URLs externes" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "Limite du volume de téléchargement" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "Taille maximale autorisée pour le téléchargement de l'image distante" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "Agent utilisateur utilisé pour télécharger depuis l'URL" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "Permettre de remplacer l'agent utilisateur utilisé pour télécharger des images et des fichiers à partir d'URL externe (laisser vide pour la valeur par défaut)" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "Validation stricte d'URL" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "Spécification du schéma nécessaire lors de la validation des URL" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "Confirmation requise" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "Exiger une confirmation explicite de l’utilisateur pour certaines actions." -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "Profondeur de l'arborescence" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "Profondeur de l'arborescence par défaut. Les niveaux plus profonds peuvent être chargés au fur et à mesure qu'ils sont nécessaires." -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "Intervalle de vérification des mises à jour" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "À quelle fréquence vérifier les mises à jour (définir à zéro pour désactiver)" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "Backup automatique" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "Activer le backup automatique de la base de données et des fichiers médias" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "Intervalle de sauvegarde automatique" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "Spécifiez le nombre de jours entre les sauvegardes automatique" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "Intervalle de suppression des tâches" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "Les résultats de la tâche en arrière-plan seront supprimés après le nombre de jours spécifié" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "Intervalle de suppression du journal d'erreur" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "Les logs d'erreur seront supprimés après le nombre de jours spécifié" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "Intervalle de suppression du journal de notification" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "Les notifications de l'utilisateur seront supprimées après le nombre de jours spécifié" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Support des code-barres" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "Activer le support du scanner de codes-barres dans l'interface web" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "Délai d'entrée du code-barres" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "Délai de traitement du code-barres" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "Prise en charge de la webcam code-barres" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "Autoriser la numérisation de codes-barres via la webcam dans le navigateur" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "Modifications de la pièce" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "Activer le champ de modification de la pièce" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "Regex IPN" -#: common/models.py:1358 +#: common/models.py:1397 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:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "Autoriser les IPN dupliqués" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "Permettre à plusieurs pièces de partager le même IPN" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "Autoriser l'édition de l'IPN" -#: common/models.py:1368 +#: common/models.py:1407 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:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "Copier les données de la pièce" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "Copier les données des paramètres par défaut lors de la duplication d'une pièce" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "Copier les données des paramètres de la pièce" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "Copier les données des paramètres par défaut lors de la duplication d'une pièce" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "Copier les données de test de la pièce" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "Copier les données de test par défaut lors de la duplication d'une pièce" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "Copier les templates de paramètres de catégorie" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "Copier les templates de paramètres de la catégorie lors de la création d'une pièce" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Modèle" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "Les pièces sont des templates par défaut" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Assemblage" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "Les pièces peuvent être assemblées à partir d'autres composants par défaut" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Composant" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "Les pièces peuvent être utilisées comme sous-composants par défaut" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Achetable" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "Les pièces sont achetables par défaut" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Vendable" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "Les pièces sont vendables par défaut" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Traçable" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "Les pièces sont traçables par défaut" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtuelle" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "Les pièces sont virtuelles par défaut" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "Afficher l'import dans les vues" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "Afficher l'assistant d'importation pour certaine vues de produits" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "Afficher les pièces connexes" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "Afficher les pièces connexes à une pièce" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "Stock initial" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "Permettre la création d'un stock initial lors de l'ajout d'une nouvelle pièce" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Données initiales du fournisseur" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Permettre la création des données initiales du fournisseur lors de l'ajout d'une nouvelle pièce" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "Format d'affichage du nom de la pièce" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "Format pour afficher le nom de la pièce" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "Icône de catégorie par défaut" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "Icône par défaut de la catégorie de la pièce (vide signifie aucune icône)" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "Renforcer les unités des paramètres" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "Utiliser le prix fournisseur" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Inclure les réductions de prix dans le calcul du prix global" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "Remplacer l'historique des achats" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "La tarification historique des bons de commande remplace les réductions de prix des fournisseurs" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "Utiliser les prix des articles en stock" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Utiliser les prix des données de stock saisies manuellement pour calculer les prix" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "Âge de tarification des articles de stock" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Exclure les articles en stock datant de plus de ce nombre de jours des calculs de prix" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "Utiliser les prix variants" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "Inclure la tarification variante dans le calcul global des prix" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "Variantes actives uniquement" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "N'utiliser que des pièces de variante actives pour calculer le prix de la variante" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "Intervalle de regénération des prix" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "Nombre de jours avant la mise à jour automatique du prix de la pièce" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "Prix internes" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "Activer les prix internes pour les pièces" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "Substitution du prix interne" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "Si disponible, les prix internes remplacent les calculs de la fourchette de prix" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "Activer l'impression d'étiquettes" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "Activer l'impression d'étiquettes depuis l'interface Web" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "Étiquette image DPI" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "Résolution DPI lors de la génération de fichiers image pour fournir aux plugins d'impression d'étiquettes" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "Activer les rapports" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "Activer la génération de rapports" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "Mode Débogage" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "Générer des rapports en mode debug (sortie HTML)" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Taille de la page" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "Taille de page par défaut pour les rapports PDF" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "Activer les rapports de test" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "Activer la génération de rapports de test" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "Joindre des rapports de test" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Lors de l'impression d'un rapport de test, joignez une copie du rapport de test à l'article en stock associé" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "Numéro de Série Universellement Unique" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "Les numéros de série pour les articles en stock doivent être uniques au niveau global" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "Remplir automatiquement les Numéros de Série" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "Remplir automatiquement les numéros de série dans les formulaires" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "Supprimer le stock épuisé" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "Détermine le comportement par défaut lorsqu'un article de stock est épuisé" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "Modèle de code de lot" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "Modèle pour générer des codes par défaut pour les articles en stock" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "Expiration du stock" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "Activer la fonctionnalité d'expiration du stock" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "Vendre le stock expiré" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "Autoriser la vente de stock expiré" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "Délai de péremption du stock" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "Nombre de jours pendant lesquels les articles en stock sont considérés comme périmés avant d'expirer" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "Construction de stock expirée" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "Autoriser la construction avec un stock expiré" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "Contrôle de la propriété des stocks" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "Activer le contrôle de la propriété sur les emplacements de stock et les articles" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "Icône par défaut de l'emplacement du stock" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "Icône par défaut de l'emplacement du stock (vide signifie aucune icône)" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "Afficher les pièces en stock installées" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "Modèle de référence de commande de construction" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "Modèle requis pour générer le champ de référence de l'ordre de construction" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "Activer les retours de commandes" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "Activer la fonctionnalité de retour de commande dans l'interface utilisateur" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "Modèle de référence de retour de commande" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "Modèle requis pour générer le champ de référence du retour de commande" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "Modifier les retours de commandes terminées" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "Autoriser la modification des retours après leur enregistrement" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "Modèle de référence de bon de commande" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "Modèle requis pour générer le champ de référence du bon de commande" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "Expédition par défaut du bon de commande" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "Activer la création d'expédition par défaut avec les bons de commandes" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "Modifier les commandes de vente terminées" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Autoriser la modification des commandes de vente après avoir été expédiées ou complétées" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "Modèle de référence de commande d'achat" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "Modèle requis pour générer le champ de référence de bon de commande" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "Modifier les bons de commande terminés" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Autoriser la modification des bons de commande après avoir été expédiés ou complétés" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "Activer les mots de passe oubliés" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "Activer la fonction \"Mot de passe oublié\" sur les pages de connexion" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "Activer les inscriptions" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "Activer l'auto-inscription pour les utilisateurs sur les pages de connexion" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "Activer le SSO" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "Activer le SSO sur les pages de connexion" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "Activer l'inscription SSO" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Activer l'auto-inscription via SSO pour les utilisateurs sur les pages de connexion" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "Email requis" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "Exiger que l'utilisateur fournisse un mail lors de l'inscription" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "Saisie automatique des utilisateurs SSO" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "Remplir automatiquement les détails de l'utilisateur à partir des données de compte SSO" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "Courriel en double" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "Lors de l'inscription, demandez deux fois aux utilisateurs leur mail" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "Mot de passe deux fois" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "Lors de l'inscription, demandez deux fois aux utilisateurs leur mot de passe" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "Domaines autorisés" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "Grouper sur inscription" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "Groupe auquel les nouveaux utilisateurs sont assignés lors de l'inscription" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "Forcer l'authentification multifacteurs" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "Les utilisateurs doivent utiliser l'authentification multifacteurs." -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "Vérifier les plugins au démarrage" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Vérifier que tous les plugins sont installés au démarrage - activer dans les environnements conteneurs" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "Activer l'intégration d'URL" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "Autoriser les plugins à ajouter des chemins URL" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "Activer l'intégration de navigation" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "Activer les plugins à s'intégrer dans la navigation" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "Activer l'intégration de plugins" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "Activer l'intégration de plugin pour ajouter des apps" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "Activer l'intégration du planning" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "Autoriser les plugins à éxécuter des tâches planifiées" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "Activer l'intégration des évènements" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "Autoriser les plugins à répondre aux évènements internes" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "Activer les codes projet" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "Fonctionnalité d'inventaire" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Activer la fonctionnalité d'inventaire pour enregistrer les niveaux de stock et le calcul de la valeur du stock" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "Période de l'inventaire automatique" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Nombre de jours entre l'enregistrement automatique des stocks (définir à zéro pour désactiver)" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Les rapports d'inventaire seront supprimés après le nombre de jours spécifié" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "Clé du paramètre (doit être unique - insensible à la casse)" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "Afficher les composants suivis" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "Afficher les composants suivis sur l'écran d'accueil" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "Afficher les catégories suivies" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "Afficher les catégories de pièces suivies sur la page d'accueil" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "Afficher les dernières pièces" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "Afficher les derniers composants sur la page d'accueil" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "Afficher les listes de matériaux non validées" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "Afficher les listes de matériaux en attente de validation sur la page d'accueil" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "Afficher les dernières modifications du stock" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "Afficher les articles de stock récemment modifiés sur la page d'accueil" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "Afficher le stock faible" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "Afficher les articles en stock bas sur la page d'accueil" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "Afficher le stock épuisé" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "Afficher les stocks épuisés sur la page d'accueil" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "Afficher le stock nécessaire" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "Afficher les pièces en stock nécessaires pour les assemblages sur la page d'accueil" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "Afficher le stock expiré" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "Afficher les pièces en stock expirées sur la page d'accueil" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "Afficher le stock périmé" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "Afficher les articles de stock périmés sur la page d'accueil" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "Afficher les constructions en attente" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "Afficher les constructions en attente sur la page d'accueil" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "Afficher les constructions en retard" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "Afficher les constructions en retard sur la page d'accueil" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "Afficher les commandes en suspens" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "Afficher les commandes en suspens sur la page d'accueil" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "Afficher les commandes en retard" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "Afficher les commandes en retard sur la page d'accueil" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "Afficher les envois en suspens" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "Afficher les envois en suspens sur la page d'accueil" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "Afficher les envois en retard" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "Afficher les envois en retard sur la page d'accueil" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "Afficher les nouvelles" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "Afficher les nouvelles sur la page d'accueil" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "Affichage du libellé en ligne" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Afficher les étiquettes PDF dans le navigateur, au lieu de les télécharger en tant que fichier" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "Imprimante d'étiquettes par défaut" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "Configurer quelle imprimante d'étiquette doit être sélectionnée par défaut" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "Affichage du rapport en ligne" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Afficher les rapports PDF dans le navigateur, au lieu de les télécharger en tant que fichier" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "Rechercher de pièces" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "Afficher les pièces dans la fenêtre d'aperçu de la recherche" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "Afficher les pièces du fournisseur dans la fenêtre de prévisualisation de la recherche" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "Rechercher les pièces du fabricant" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "Afficher les pièces du fabricant dans la fenêtre de prévisualisation de recherche" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "Masquer les pièces inactives" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "Exclure les pièces inactives de la fenêtre de prévisualisation de recherche" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "Rechercher des catégories" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "Afficher les catégories de pièces dans la fenêtre de prévisualisation de recherche" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "Rechercher dans le stock" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "Afficher les pièces en stock dans la fenêtre d'aperçu de la recherche" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "Cacher les pièces indisponibles" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "Exclure les articles en stock qui ne sont pas disponibles de la fenêtre de prévisualisation de recherche" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "Chercher des Emplacements" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "Afficher les emplacements dans la fenêtre d'aperçu de la recherche" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "Rechercher les entreprises" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "Afficher les entreprises dans la fenêtre de prévisualisation de recherche" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "Rechercher les commandes de construction" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "Afficher les commandes de construction dans la fenêtre de prévisualisation de recherche" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "Rechercher des bons de commande" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "Afficher les bons de commande dans la fenêtre de prévisualisation de recherche" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "Exclure les bons de commande inactifs" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "Exclure les commandes d’achat inactives de la fenêtre de prévisualisation de recherche" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "Rechercher les bons de commande" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "Afficher les bons de commande dans la fenêtre de prévisualisation de la recherche" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "Exclure les bons de commande inactives" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "Exclure les bons de commande inactifs de la fenêtre de prévisualisation de recherche" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "Rechercher les commandes retournées" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "Résultats de l'aperçu de la recherche" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "Nombre de résultats à afficher dans chaque section de la fenêtre de prévisualisation de recherche" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "Recherche Regex" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "Afficher la quantité dans les formulaires" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "Afficher la quantité disponible dans certains formulaires" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "La touche Echap ferme les formulaires" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "Utilisez la touche Echap pour fermer les formulaires modaux" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "Barre de navigation fixe" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "La position de la barre de navigation est fixée en haut de l'écran" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "Format de date" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "Format préféré pour l'affichage des dates" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Planification des pièces" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "Afficher les informations de planification des pièces" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventaire des pièces" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "Longueur de la chaîne dans les Tableau" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Prix" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3455,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "Actif" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "Ce webhook (lien de rappel HTTP) est-il actif" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "Jeton" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "Jeton d'accès" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "Confidentiel" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "ID message" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "Identifiant unique pour ce message" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "Hôte" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "Hôte à partir duquel ce message a été reçu" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "Entête" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "En-tête de ce message" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "Corps" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "Corps de ce message" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "Endpoint à partir duquel ce message a été reçu" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "Le travail sur ce message est-il terminé ?" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "Id" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titre" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "Publié" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "Auteur" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "Résumé" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "Lu" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "Cette nouvelle a-t-elle été lue ?" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3559,31 +3614,31 @@ msgstr "Cette nouvelle a-t-elle été lue ?" msgid "Image" msgstr "Image" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Définition" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3621,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "Erreur déclenchée par le plugin" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3659,184 +3774,184 @@ msgstr "Pièces importées" msgid "Previous Step" msgstr "Étape précédente" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "Description de la société" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "Description de la société" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "Site web" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "Site Web de la société" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Numéro de téléphone" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "Numéro de téléphone de contact" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "Adresse e-mail de contact" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Contact" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "Point de contact" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "Lien externe vers les informations de l'entreprise" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "est client" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "Vendez-vous des objets à cette entreprise?" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "est fournisseur" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "Est-ce que vous achetez des articles à cette entreprise?" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "est fabricant" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "Cette entreprise fabrique-t-elle des pièces?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "Devise par défaut utilisée pour cette entreprise" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Société" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "Sélectionner une entreprise" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "Sélectionner comme adresse principale" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "Ligne 1" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "Adresse" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "Ligne 2" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "Seconde ligne d'adresse" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "Code postal" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "Ville / Région" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "Code postal Ville / Région" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "État / Province" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "État ou province" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "Pays" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "Pays" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "Notes du livreur" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "Instructions pour le livreur" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "Notes pour la livraison interne" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "Notes internes pour la livraison" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3848,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "Fabricant" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Sélectionner un fabricant" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3863,67 +3978,67 @@ msgstr "Sélectionner un fabricant" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Pièces du fabricant" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "Nom du paramètre" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Valeur" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "Valeur du paramètre" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "Unités" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "Unités du paramètre" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "La pièce du fabricant liée doit faire référence à la même pièce de base" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3938,58 +4053,58 @@ msgstr "La pièce du fabricant liée doit faire référence à la même pièce d msgid "Supplier" msgstr "Fournisseur" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Sélectionner un fournisseur" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "Unité de gestion des stocks des fournisseurs" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "Sélectionner un fabricant" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "Lien de la pièce du fournisseur externe" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "Description de la pièce du fournisseur" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "Note" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "coût de base" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "Frais minimums (par exemple frais de stock)" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Conditionnement" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "Conditionnement de l'article" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3999,27 +4114,27 @@ msgstr "Conditionnement de l'article" msgid "Pack Quantity" msgstr "Nombre de paquet" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "plusieurs" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "Commande multiple" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "Quantité disponible auprès du fournisseur" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "Disponibilité mise à jour" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "Date de dernière mise à jour des données de disponibilité" @@ -4081,10 +4196,10 @@ msgstr "Télécharger l'image depuis l'URL" msgid "Delete image" msgstr "Supprimer image" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4099,7 +4214,7 @@ msgstr "Client" msgid "Uses default currency" msgstr "Utiliser la devise par défaut" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4113,11 +4228,11 @@ msgstr "Téléphone" #: company/templates/company/company_base.html:205 #: part/templates/part/part_base.html:528 msgid "Remove Image" -msgstr "Supprimer l'image" +msgstr "" #: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" -msgstr "Supprimer l'image associée de cette entreprise" +msgstr "" #: company/templates/company/company_base.html:208 #: part/templates/part/part_base.html:531 @@ -4129,12 +4244,12 @@ msgstr "Supprimer" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "Charger une image" +msgstr "" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "Télécharger une image" +msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 @@ -4317,7 +4432,7 @@ msgstr "Nouveau paramètre" #: company/templates/company/manufacturer_part.html:206 #: templates/js/translated/part.js:1422 msgid "Add Parameter" -msgstr "Ajouter un paramètre" +msgstr "" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" @@ -4344,7 +4459,7 @@ msgid "Addresses" msgstr "Adresses" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4437,16 +4552,16 @@ msgstr "" #: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" -msgstr "Lier le code-barres à la pièce du fournisseur" +msgstr "" #: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" -msgstr "Mettre à jour la disponibilité des pièces" +msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4485,6 +4600,10 @@ msgstr "Entreprises" msgid "New Company" msgstr "Nouvelle Entreprise" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "Nom de l'étiquette" @@ -4501,7 +4620,7 @@ msgstr "Étiquette" msgid "Label template file" msgstr "Fichier de modèle d'étiquette" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "Activé" @@ -4525,7 +4644,7 @@ msgstr "Hauteur [mm]" msgid "Label height, specified in mm" msgstr "Hauteur de l'étiquette, spécifiée en mm" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "Modèle de nom de fichier" @@ -4539,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "Filtres" @@ -4557,7 +4676,108 @@ msgstr "QR Code" msgid "QR code" msgstr "QR code" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "Inconnu" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4570,7 +4790,7 @@ msgstr "Prix Total" msgid "No matching purchase order found" msgstr "Aucun bon de commande correspondant n'a été trouvé" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4584,7 +4804,7 @@ msgstr "Aucun bon de commande correspondant n'a été trouvé" msgid "Purchase Order" msgstr "Commande d’achat" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4593,192 +4813,188 @@ msgstr "Commande d’achat" msgid "Return Order" msgstr "Retour de commande" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "Inconnu" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "Prix total pour cette commande" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "Devise de la commande" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "Lien vers une page externe" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Date prévue pour la livraison de la commande. La commande sera en retard après cette date." -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "Créé par" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "Utilisateur ou groupe responsable de cette commande" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "Référence de la commande" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "Statut de la commande d'achat" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "Société de laquelle les articles sont commandés" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "Référence du fournisseur" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "Code de référence de la commande fournisseur" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "reçu par" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "Date d'émission" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "Date d'émission de la commande" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "Date à laquelle la commande a été complété" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "La quantité doit être un nombre positif" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "Société à laquelle les articles sont vendus" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "Référence client " -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "Nom de l’expédition" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "expédié par" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "La commande ne peut pas être terminée car aucune pièce n'a été assignée" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "La commande ne peut pas être terminée car il y a des envois incomplets" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "Nombre d'élement" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "Contexte" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "Prix unitaire" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "supprimé" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "Commande" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "Pièce fournisseur" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4788,325 +5004,325 @@ msgstr "Pièce fournisseur" msgid "Received" msgstr "Reçu" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "Nombre d'éléments reçus" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Prix d'achat" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "Prix d'achat unitaire" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "Où l'Acheteur veut-il stocker cet article ?" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "La pièce virtuelle ne peut pas être affectée à une commande" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "Seules les pièces vendues peuvent être attribuées à une commande" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Prix de vente" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "Prix de vente unitaire" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "Quantité expédiée" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "Date d'expédition" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "Vérifié par" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "Utilisateur qui a vérifié cet envoi" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Envoi" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "Numéro d'expédition" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "N° de suivi" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "Information de suivi des colis" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "N° de facture" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "Numéro de référence de la facture associée" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "Le colis a déjà été envoyé" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "L'expédition n'a pas d'articles en stock alloués" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "L'article de stock n'a pas été assigné" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "Impossible d'allouer le stock à une ligne sans pièce" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "La quantité d'allocation ne peut pas excéder la quantité en stock" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "Ligne" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "Article" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "Statut du retour de commande" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "La commande ne peut pas être annulée" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "La commande n'est pas ouverte" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "Devise du prix d'achat" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "Entrez les numéros de série pour les articles de stock entrants" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Code-barres" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "Le code-barres est déjà utilisé" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "Une quantité entière doit être fournie pour les pièces tracables" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "Entrez les numéros de série à allouer" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "Aucune correspondance trouvée pour les numéros de série suivants" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "Les numéros de série suivants sont déjà alloués" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5290,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5510,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "ID de composant" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "Nom de l'article" @@ -5524,20 +5740,20 @@ msgstr "Nom de l'article" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "IPN" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Révision" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Mots-clés" @@ -5562,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Stock Minimum" @@ -5576,33 +5792,26 @@ msgstr "Stock Minimum" msgid "In Stock" msgstr "En Stock" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "En Commande" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5615,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5638,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Prix Minimum" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Prix Maximum" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5691,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Catégorie de composant" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "Catégories de composants" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "Nom de l'article" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "Catégorie" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "Catégorie de la pièce" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "Ventes multiples" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6076,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "Date" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "Notes additionnelles" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "Nom de test" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Requis" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "Valeur requise" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "Données" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Valeur par Défaut" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "Article du BOM" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Surplus" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Validée" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "Devise d'achat de l'item" @@ -6487,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6838,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7130,13 +7330,9 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" -msgstr "Calculer" +msgstr "" #: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" @@ -7248,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "Modifier" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7402,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "Aucune action spécifiée" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Aucune action correspondante trouvée" @@ -7464,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7563,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7575,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7643,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7663,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7735,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "Non du Plugin" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "Extension Intégrée" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Extension" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7857,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "Aucun objet valide n'a été fourni au modèle" @@ -7950,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "Nom du modèle" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "Filtres de composants" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "Extrait " -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "Elément" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8087,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8113,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "Résultat" @@ -8144,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Numéro de série" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8178,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8237,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8298,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Propriétaire" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "Sélectionner un propriétaire" @@ -8333,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "La quantité doit être de 1 pour un article avec un numéro de série" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Le numéro de série ne peut pas être défini si la quantité est supérieure à 1" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "Numéro de série pour cet article" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "Les numéros de série doivent être une liste de nombres entiers" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "La quantité ne correspond pas au nombre de numéros de série" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "Les numéros de série existent déjà" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8559,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "Entrez le nombre d'articles en stock à sérialiser" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "Entrez les numéros de série pour les nouveaux articles" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "Les numéros de série ne peuvent pas être assignés à cette pièce" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8846,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Assemblage" @@ -8912,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -8954,11 +9229,11 @@ msgstr "" #: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" -msgstr "Code QR de l'article en stock" +msgstr "" #: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" -msgstr "Lier le code-barres à l'article de stock" +msgstr "" #: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." @@ -9203,7 +9478,7 @@ msgstr "" #: templates/InvenTree/index.html:299 msgid "InvenTree News" -msgstr "Nouvelles d'InvenTree" +msgstr "" #: templates/InvenTree/index.html:301 msgid "Current News" @@ -9237,7 +9512,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:38 msgid "No unread notifications found" -msgstr "Aucune notification non lue trouvée" +msgstr "" #: templates/InvenTree/notifications/notifications.html:58 msgid "No notification history found" @@ -9413,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "Informations sur le plugin" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "aucune information de version fournie" @@ -9567,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Supprimer" @@ -9588,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10044,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10124,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10253,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "Quantité requise" @@ -10273,59 +10543,59 @@ msgstr "" #: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" -msgstr "Aucune réponse" +msgstr "" #: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" -msgstr "Aucune réponse du serveur InvenTree" +msgstr "" #: templates/js/translated/api.js:232 msgid "Error 400: Bad request" -msgstr "Erreur 400: Mauvaise requête" +msgstr "" #: templates/js/translated/api.js:233 msgid "API request returned error code 400" -msgstr "La requête de l'API a retourné le code d'erreur 400" +msgstr "" #: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" -msgstr "Erreur 401: non authentifié" +msgstr "" #: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" -msgstr "Informations d’authentification non fournies" +msgstr "" #: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" -msgstr "Erreur 403: Permission refusée" +msgstr "" #: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "Vous n'avez pas les autorisations requises pour accéder à cette fonction" +msgstr "" #: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" -msgstr "Erreur 404: Ressource introuvable" +msgstr "" #: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" -msgstr "La ressource demandée n'a pas pu être trouvée sur le serveur" +msgstr "" #: templates/js/translated/api.js:252 msgid "Error 405: Method Not Allowed" -msgstr "Erreur 405: Méthode non autorisée" +msgstr "" #: templates/js/translated/api.js:253 msgid "HTTP method not allowed at URL" -msgstr "Méthode HTTP non autorisée à l'adresse URL" +msgstr "" #: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "Erreur 408: Délai dépassé" +msgstr "" #: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" -msgstr "Délai de connexion dépassé lors de la demande de données depuis le serveur" +msgstr "" #: templates/js/translated/api.js:261 msgid "Error 503: Service Unavailable" @@ -10337,11 +10607,11 @@ msgstr "" #: templates/js/translated/api.js:265 msgid "Unhandled Error Code" -msgstr "Code d'erreur non géré" +msgstr "" #: templates/js/translated/api.js:266 msgid "Error code" -msgstr "Code d’erreur" +msgstr "" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" @@ -10361,23 +10631,23 @@ msgstr "" #: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "Aucune pièce jointe trouvée" +msgstr "" #: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "Modifier la pièce jointe" +msgstr "" #: templates/js/translated/attachment.js:346 msgid "Upload Date" -msgstr "Date d'upload" +msgstr "" #: templates/js/translated/attachment.js:366 msgid "Edit attachment" -msgstr "Modifier la pièce jointe" +msgstr "" #: templates/js/translated/attachment.js:374 msgid "Delete attachment" -msgstr "Supprimer la pièce jointe" +msgstr "" #: templates/js/translated/barcode.js:43 msgid "Scan barcode data here using barcode scanner" @@ -10385,7 +10655,7 @@ msgstr "" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "Saisir les données du code-barres" +msgstr "" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" @@ -10393,24 +10663,24 @@ msgstr "" #: templates/js/translated/barcode.js:138 msgid "Enter optional notes for stock transfer" -msgstr "Saisir les notes optionnelles pour le transfert de stock" +msgstr "" #: templates/js/translated/barcode.js:139 msgid "Enter notes" -msgstr "Saisir des notes" +msgstr "" #: templates/js/translated/barcode.js:188 msgid "Server error" -msgstr "Erreur serveur" +msgstr "" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" -msgstr "Réponse inconnue du serveur" +msgstr "" #: templates/js/translated/barcode.js:252 #: templates/js/translated/modals.js:1120 msgid "Invalid server response" -msgstr "Réponse du serveur invalide" +msgstr "" #: templates/js/translated/barcode.js:372 msgid "Scan barcode data" @@ -10422,7 +10692,7 @@ msgstr "Scanner le code-barres" #: templates/js/translated/barcode.js:458 msgid "No URL in response" -msgstr "Aucune URL dans la réponse" +msgstr "" #: templates/js/translated/barcode.js:498 msgid "This will remove the link to the associated barcode" @@ -10430,11 +10700,11 @@ msgstr "" #: templates/js/translated/barcode.js:504 msgid "Unlink" -msgstr "Délier" +msgstr "" #: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 msgid "Remove stock item" -msgstr "Supprimer l'article de stock" +msgstr "" #: templates/js/translated/barcode.js:610 msgid "Scan Stock Items Into Location" @@ -10455,15 +10725,15 @@ msgstr "" #: templates/js/translated/barcode.js:687 msgid "Stock Item already scanned" -msgstr "Article de stock déjà scanné" +msgstr "" #: templates/js/translated/barcode.js:691 msgid "Stock Item already in this location" -msgstr "Article de stock déjà à cet emplacement" +msgstr "" #: templates/js/translated/barcode.js:698 msgid "Added stock item" -msgstr "Article de stock ajouté" +msgstr "" #: templates/js/translated/barcode.js:707 msgid "Barcode does not match valid stock item" @@ -10483,12 +10753,12 @@ msgstr "" #: templates/js/translated/barcode.js:806 msgid "Check Into Location" -msgstr "Vérifier dans l'emplacement" +msgstr "" #: templates/js/translated/barcode.js:875 #: templates/js/translated/barcode.js:884 msgid "Barcode does not match a valid location" -msgstr "Le code-barres ne correspond pas à un emplacement valide" +msgstr "" #: templates/js/translated/bom.js:78 msgid "Create BOM Item" @@ -10500,7 +10770,7 @@ msgstr "" #: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "Données de la rangée" +msgstr "" #: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 #: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 @@ -10512,7 +10782,7 @@ msgstr "" #: templates/js/translated/bom.js:306 msgid "Download BOM Template" -msgstr "Télécharger le template de la BOM" +msgstr "" #: templates/js/translated/bom.js:351 msgid "Multi Level BOM" @@ -10524,11 +10794,11 @@ msgstr "" #: templates/js/translated/bom.js:357 msgid "Levels" -msgstr "Niveaux" +msgstr "" #: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "Sélectionner le nombre maximum de niveaux de BOM à exporter (0 = tous les niveaux)" +msgstr "" #: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" @@ -10540,7 +10810,7 @@ msgstr "" #: templates/js/translated/bom.js:371 msgid "Include Parameter Data" -msgstr "Inclure les données de paramètre" +msgstr "" #: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" @@ -10548,7 +10818,7 @@ msgstr "" #: templates/js/translated/bom.js:377 msgid "Include Stock Data" -msgstr "Inclure les données de stock" +msgstr "" #: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" @@ -10622,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10642,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10693,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10705,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" -msgstr "Êtes-vous sûr de vouloir annuler cette construction?" +msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" -msgstr "Prochain numéro de série disponible" +msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "Dernier numéro de série" +msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" -msgstr "La BOM contient des pièces traçables" +msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" -msgstr "Les pièces traçables peuvent avoir des numéros de série spécifiés" +msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" -msgstr "Sortie complète" +msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" -msgstr "Supprimer les sorties" - -#: templates/js/translated/build.js:1110 -msgid "build output" -msgstr "" - -#: templates/js/translated/build.js:1111 -msgid "build outputs" msgstr "" #: templates/js/translated/build.js:1115 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1116 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" -msgstr "Pas d'informations sur l'utilisateur" +msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" -msgstr "Pièce traçable" +msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" -msgstr "Commander des stocks" +msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11103,11 +11373,11 @@ msgstr "" #: templates/js/translated/company.js:536 msgid "Parts Supplied" -msgstr "Pièces fournies" +msgstr "" #: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "Pièces fabriquées" +msgstr "" #: templates/js/translated/company.js:560 msgid "No company information found" @@ -11211,7 +11481,7 @@ msgstr "" #: templates/js/translated/company.js:1181 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 msgid "Order parts" -msgstr "Commander des composants" +msgstr "" #: templates/js/translated/company.js:1198 msgid "Delete manufacturer parts" @@ -11259,7 +11529,7 @@ msgstr "" #: templates/js/translated/company.js:1486 msgid "Delete supplier parts" -msgstr "Supprimer les pièces du fournisseur" +msgstr "" #: templates/js/translated/company.js:1536 msgid "No supplier parts found" @@ -11427,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11482,7 +11748,7 @@ msgstr "" #: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 #: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "Annuler" +msgstr "" #: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 #: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 @@ -11611,19 +11877,19 @@ msgstr "" #: templates/js/translated/part.js:90 msgid "Part Attributes" -msgstr "Attributs de la pièce" +msgstr "" #: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "Options de création de pièce" +msgstr "" #: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "Options de duplication de pièces" +msgstr "" #: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "Ajouter une catégorie de pièce" +msgstr "" #: templates/js/translated/part.js:308 msgid "Parent part category" @@ -11679,19 +11945,19 @@ msgstr "" #: templates/js/translated/part.js:433 msgid "Part created successfully" -msgstr "Composant créé avec succès" +msgstr "" #: templates/js/translated/part.js:461 msgid "Edit Part" -msgstr "Modifier la pièce" +msgstr "" #: templates/js/translated/part.js:463 msgid "Part edited" -msgstr "Pièce modifiée" +msgstr "" #: templates/js/translated/part.js:474 msgid "Create Part Variant" -msgstr "Créer une variante de pièce" +msgstr "" #: templates/js/translated/part.js:531 msgid "Active Part" @@ -11756,7 +12022,7 @@ msgstr "" #: templates/js/translated/part.js:685 #: templates/js/translated/table_filters.js:743 msgid "Low stock" -msgstr "Stock bas" +msgstr "" #: templates/js/translated/part.js:688 msgid "No stock available" @@ -11772,7 +12038,7 @@ msgstr "" #: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 msgid "Virtual part" -msgstr "Pièce virtuelle" +msgstr "" #: templates/js/translated/part.js:806 msgid "Subscribed part" @@ -11780,7 +12046,7 @@ msgstr "" #: templates/js/translated/part.js:810 msgid "Salable part" -msgstr "Pièce vendable" +msgstr "" #: templates/js/translated/part.js:889 msgid "Schedule generation of a new stocktake report." @@ -11812,7 +12078,7 @@ msgstr "" #: templates/js/translated/part.js:1281 msgid "No variants found" -msgstr "Aucune variante trouvée" +msgstr "" #: templates/js/translated/part.js:1599 msgid "No part parameter templates found" @@ -11857,7 +12123,7 @@ msgstr "" #: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 msgid "No parts found" -msgstr "Aucune pièce trouvée" +msgstr "" #: templates/js/translated/part.js:2200 msgid "Set the part category for the selected parts" @@ -11871,22 +12137,26 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" #: templates/js/translated/part.js:2384 msgid "No category" -msgstr "Aucune catégorie" +msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2640 msgid "Display as list" -msgstr "Afficher sous forme de liste" +msgstr "" #: templates/js/translated/part.js:2547 msgid "Display as grid" -msgstr "Afficher sous forme de grille" +msgstr "" #: templates/js/translated/part.js:2645 msgid "No subcategories found" @@ -11894,7 +12164,7 @@ msgstr "" #: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "Afficher sous forme d'arborescence" +msgstr "" #: templates/js/translated/part.js:2761 msgid "Load Subcategories" @@ -11910,12 +12180,12 @@ msgstr "" #: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436 msgid "Edit test result" -msgstr "Modifier le résultat du test" +msgstr "" #: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437 #: templates/js/translated/stock.js:1699 msgid "Delete test result" -msgstr "Supprimer le résultat du test" +msgstr "" #: templates/js/translated/part.js:2910 msgid "This test is defined for a parent part" @@ -11987,7 +12257,7 @@ msgstr "" #: templates/js/translated/plugin.js:158 msgid "The Plugin was installed" -msgstr "Le plugin a été installé" +msgstr "" #: templates/js/translated/plugin.js:177 msgid "Are you sure you want to enable this plugin?" @@ -12196,7 +12466,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:1301 msgid "Order Code" -msgstr "Référence de commande" +msgstr "" #: templates/js/translated/purchase_order.js:1303 msgid "Quantity to Receive" @@ -12228,7 +12498,7 @@ msgstr "" #: templates/js/translated/sales_order.js:774 #: templates/js/translated/sales_order.js:998 msgid "Order is overdue" -msgstr "Commande en retard" +msgstr "" #: templates/js/translated/purchase_order.js:1744 #: templates/js/translated/return_order.js:354 @@ -12282,11 +12552,11 @@ msgstr "" #: templates/js/translated/report.js:63 msgid "items selected" -msgstr "éléments sélectionnés" +msgstr "" #: templates/js/translated/report.js:71 msgid "Select Report Template" -msgstr "Sélectionner un template de reporting" +msgstr "" #: templates/js/translated/report.js:86 msgid "Select Test Report Template" @@ -12343,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12492,7 +12762,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1710 #: templates/js/translated/stock.js:1744 msgid "Shipped to customer" -msgstr "Livré au client" +msgstr "" #: templates/js/translated/sales_order.js:1631 #: templates/js/translated/sales_order.js:1719 @@ -12501,16 +12771,16 @@ msgstr "" #: templates/js/translated/sales_order.js:2008 msgid "Allocate serial numbers" -msgstr "Allouer des numéros de série" +msgstr "" #: templates/js/translated/sales_order.js:2012 msgid "Purchase stock" -msgstr "Acheter du stock" +msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" -msgstr "Calculer le prix" +msgstr "" #: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been shipped" @@ -12522,9 +12792,9 @@ msgstr "" #: templates/js/translated/sales_order.js:2109 msgid "Allocate Serial Numbers" -msgstr "Allouer des numéros de série" +msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12622,7 +12892,7 @@ msgstr "" #: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "Entrez les numéros de série pour le nouveau stock (ou laisser vide)" +msgstr "" #: templates/js/translated/stock.js:439 msgid "Stock item duplicated" @@ -12658,99 +12928,99 @@ msgstr "" #: templates/js/translated/stock.js:593 msgid "Find Serial Number" -msgstr "Trouver un numéro de série" +msgstr "" #: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "Entrer le numéro de série" +msgstr "" #: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "Entrer un numéro de série" +msgstr "" #: templates/js/translated/stock.js:634 msgid "No matching serial number" -msgstr "Aucun numéro de série correspondant" +msgstr "" #: templates/js/translated/stock.js:643 msgid "More than one matching result found" -msgstr "Plus d'un résultat correspondant trouvé" +msgstr "" #: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" -msgstr "Confirmer l'assignation de stock" +msgstr "" #: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" -msgstr "Assigner le stock au client" +msgstr "" #: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" -msgstr "Attention : l'opération de fusion est irréversible" +msgstr "" #: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" -msgstr "Certaines informations seront perdues lors de la fusion des articles en stock" +msgstr "" #: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" -msgstr "L'historique des transactions de stock sera supprimé pour les éléments fusionnés" +msgstr "" #: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" -msgstr "Les informations sur la pièce du fournisseur seront supprimées pour les éléments fusionnés" +msgstr "" #: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" -msgstr "Confirmer la fusion de l'article en stock" +msgstr "" #: templates/js/translated/stock.js:929 msgid "Merge Stock Items" -msgstr "Fusionner les articles en stock" +msgstr "" #: templates/js/translated/stock.js:1024 msgid "Transfer Stock" -msgstr "Transférer le stock" +msgstr "" #: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "Transférer" +msgstr "" #: templates/js/translated/stock.js:1031 msgid "Count Stock" -msgstr "Compter le stock" +msgstr "" #: templates/js/translated/stock.js:1032 msgid "Count" -msgstr "Compter" +msgstr "" #: templates/js/translated/stock.js:1036 msgid "Remove Stock" -msgstr "Supprimer du stock" +msgstr "" #: templates/js/translated/stock.js:1037 msgid "Take" -msgstr "Supprimer" +msgstr "" #: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "Ajouter du stock" +msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "Ajouter" #: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "Supprimer le stock" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" -msgstr "La quantité ne peut pas être ajustée pour un stock sérialisé" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" -msgstr "Spécifiez la quantité du stock" +msgstr "" #: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" @@ -12766,15 +13036,15 @@ msgstr "" #: templates/js/translated/stock.js:1360 msgid "PASS" -msgstr "RÉUSSI" +msgstr "" #: templates/js/translated/stock.js:1362 msgid "FAIL" -msgstr "ÉCHEC" +msgstr "" #: templates/js/translated/stock.js:1367 msgid "NO RESULT" -msgstr "AUCUN RÉSULTAT" +msgstr "" #: templates/js/translated/stock.js:1429 msgid "Pass test" @@ -12782,15 +13052,15 @@ msgstr "" #: templates/js/translated/stock.js:1432 msgid "Add test result" -msgstr "Ajouter un résultat de test" +msgstr "" #: templates/js/translated/stock.js:1456 msgid "No test results found" -msgstr "Aucun résultat de test trouvé" +msgstr "" #: templates/js/translated/stock.js:1520 msgid "Test Date" -msgstr "Date du test" +msgstr "" #: templates/js/translated/stock.js:1682 msgid "Edit Test Result" @@ -12802,19 +13072,19 @@ msgstr "" #: templates/js/translated/stock.js:1736 msgid "In production" -msgstr "En production" +msgstr "" #: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" -msgstr "Article en stock installé dans un autre article en stock" +msgstr "" #: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" -msgstr "Assigné à une commande de vente" +msgstr "" #: templates/js/translated/stock.js:1754 msgid "No stock location set" -msgstr "Aucun emplacement de stock défini" +msgstr "" #: templates/js/translated/stock.js:1810 msgid "Change stock status" @@ -12822,7 +13092,7 @@ msgstr "" #: templates/js/translated/stock.js:1819 msgid "Merge stock" -msgstr "Fusionner le stock" +msgstr "" #: templates/js/translated/stock.js:1868 msgid "Delete stock" @@ -12846,31 +13116,31 @@ msgstr "" #: templates/js/translated/stock.js:2061 msgid "Stock item is in production" -msgstr "L'article de stock est en production" +msgstr "" #: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" -msgstr "L'article en stock a été assigné à une commande de vente" +msgstr "" #: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" -msgstr "L'article en stock a été assigné à un client" +msgstr "" #: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" -msgstr "L'article de stock sérialisé a été alloué" +msgstr "" #: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" -msgstr "L'article de stock a été complètement alloué" +msgstr "" #: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" -msgstr "L'article de stock a été partiellement alloué" +msgstr "" #: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" -msgstr "L'article en stock a été installé dans un autre article" +msgstr "" #: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" @@ -12878,32 +13148,32 @@ msgstr "" #: templates/js/translated/stock.js:2085 msgid "Stock item has expired" -msgstr "L'article en stock a expiré" +msgstr "" #: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" -msgstr "L'article en stock va bientôt expirer" +msgstr "" #: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" -msgstr "L'article de stock a été rejeté" +msgstr "" #: templates/js/translated/stock.js:2094 msgid "Stock item is lost" -msgstr "L'article de stock est perdu" +msgstr "" #: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" -msgstr "L'article de stock est détruit" +msgstr "" #: templates/js/translated/stock.js:2100 #: templates/js/translated/table_filters.js:350 msgid "Depleted" -msgstr "Epuisé" +msgstr "" #: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" -msgstr "Pièce de fournisseur non précisée" +msgstr "" #: templates/js/translated/stock.js:2312 msgid "Stock Value" @@ -12911,7 +13181,7 @@ msgstr "" #: templates/js/translated/stock.js:2440 msgid "No stock items matching query" -msgstr "Aucun article de stock ne correspond à la requête" +msgstr "" #: templates/js/translated/stock.js:2544 msgid "stock locations" @@ -12923,7 +13193,7 @@ msgstr "" #: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "Détails" +msgstr "" #: templates/js/translated/stock.js:2821 msgid "No changes" @@ -12935,7 +13205,7 @@ msgstr "" #: templates/js/translated/stock.js:2855 msgid "Location no longer exists" -msgstr "L'emplacement n'existe plus" +msgstr "" #: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" @@ -12943,7 +13213,7 @@ msgstr "" #: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" -msgstr "Le bon de commande n'existe plus" +msgstr "" #: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" @@ -12955,19 +13225,19 @@ msgstr "" #: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" -msgstr "Le client n'existe plus" +msgstr "" #: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" -msgstr "L'article de stock n'existe plus" +msgstr "" #: templates/js/translated/stock.js:2976 msgid "Added" -msgstr "Ajouté" +msgstr "" #: templates/js/translated/stock.js:2984 msgid "Removed" -msgstr "Supprimé" +msgstr "" #: templates/js/translated/stock.js:3056 msgid "No installed items" @@ -13030,25 +13300,25 @@ msgstr "" #: templates/js/translated/table_filters.js:613 #: templates/js/translated/table_filters.js:654 msgid "Order status" -msgstr "État de la commande" +msgstr "" #: templates/js/translated/table_filters.js:94 #: templates/js/translated/table_filters.js:618 #: templates/js/translated/table_filters.js:644 #: templates/js/translated/table_filters.js:659 msgid "Outstanding" -msgstr "En suspens" +msgstr "" #: templates/js/translated/table_filters.js:102 #: templates/js/translated/table_filters.js:524 #: templates/js/translated/table_filters.js:626 #: templates/js/translated/table_filters.js:667 msgid "Assigned to me" -msgstr "Assigné à moi" +msgstr "" #: templates/js/translated/table_filters.js:158 msgid "Trackable Part" -msgstr "Pièce traçable" +msgstr "" #: templates/js/translated/table_filters.js:162 msgid "Assembled Part" @@ -13070,11 +13340,11 @@ msgstr "" #: templates/js/translated/table_filters.js:234 #: templates/js/translated/table_filters.js:345 msgid "Include sublocations" -msgstr "Inclure les sous-emplacements" +msgstr "" #: templates/js/translated/table_filters.js:235 msgid "Include locations" -msgstr "Inclure les emplacements" +msgstr "" #: templates/js/translated/table_filters.js:267 msgid "Has location type" @@ -13084,7 +13354,7 @@ msgstr "" #: templates/js/translated/table_filters.js:279 #: templates/js/translated/table_filters.js:707 msgid "Include subcategories" -msgstr "Inclure les sous-catégories" +msgstr "" #: templates/js/translated/table_filters.js:287 #: templates/js/translated/table_filters.js:755 @@ -13094,64 +13364,64 @@ msgstr "" #: templates/js/translated/table_filters.js:298 #: templates/js/translated/table_filters.js:380 msgid "Is Serialized" -msgstr "A un numéro de série" +msgstr "" #: templates/js/translated/table_filters.js:301 #: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" -msgstr "Numéro de série PGE" +msgstr "" #: templates/js/translated/table_filters.js:302 #: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" -msgstr "Numéro de série supérieur ou égal à" +msgstr "" #: templates/js/translated/table_filters.js:305 #: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" -msgstr "Numéro de série PPE" +msgstr "" #: templates/js/translated/table_filters.js:306 #: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" -msgstr "Numéro de série inférieur ou égal à" +msgstr "" #: templates/js/translated/table_filters.js:309 #: templates/js/translated/table_filters.js:310 #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "Numéro de série" +msgstr "" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 msgid "Batch code" -msgstr "Code de lot" +msgstr "" #: templates/js/translated/table_filters.js:325 #: templates/js/translated/table_filters.js:696 msgid "Active parts" -msgstr "Pièces actives" +msgstr "" #: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" -msgstr "Afficher le stock pour les pièces actives" +msgstr "" #: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" -msgstr "La pièce est un assemblage" +msgstr "" #: templates/js/translated/table_filters.js:335 msgid "Is allocated" -msgstr "Est alloué" +msgstr "" #: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" -msgstr "L'élément a été alloué" +msgstr "" #: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" -msgstr "Le stock est disponible pour utilisation" +msgstr "" #: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" @@ -13165,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13183,16 +13449,16 @@ msgstr "" #: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" -msgstr "Afficher les articles de stock qui sont installés dans un autre article" +msgstr "" #: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" -msgstr "Afficher les articles qui ont été assignés à un client" +msgstr "" #: templates/js/translated/table_filters.js:396 #: templates/js/translated/table_filters.js:397 msgid "Stock status" -msgstr "État du stock" +msgstr "" #: templates/js/translated/table_filters.js:400 msgid "Has batch code" @@ -13204,11 +13470,11 @@ msgstr "" #: templates/js/translated/table_filters.js:414 msgid "Has purchase price" -msgstr "A un prix d'achat" +msgstr "" #: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" -msgstr "Afficher les articles de stock qui ont un prix d'achat défini" +msgstr "" #: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" @@ -13220,11 +13486,11 @@ msgstr "" #: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" -msgstr "Afficher les articles de stock qui ont expiré" +msgstr "" #: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" -msgstr "Afficher le stock qui est proche de l'expiration" +msgstr "" #: templates/js/translated/table_filters.js:456 msgid "Test Passed" @@ -13236,15 +13502,15 @@ msgstr "" #: templates/js/translated/table_filters.js:511 msgid "Build status" -msgstr "État de la construction" +msgstr "" #: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" -msgstr "Inclure les pièces des sous-catégories" +msgstr "" #: templates/js/translated/table_filters.js:713 msgid "Show active parts" -msgstr "Afficher les pièces actives" +msgstr "" #: templates/js/translated/table_filters.js:721 msgid "Available stock" @@ -13261,11 +13527,11 @@ msgstr "" #: templates/js/translated/table_filters.js:734 msgid "Has IPN" -msgstr "A un IPN" +msgstr "" #: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" -msgstr "La pièce a un numéro de pièce interne" +msgstr "" #: templates/js/translated/table_filters.js:739 msgid "In stock" @@ -13273,7 +13539,7 @@ msgstr "" #: templates/js/translated/table_filters.js:747 msgid "Purchasable" -msgstr "Achetable" +msgstr "" #: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" @@ -13285,11 +13551,11 @@ msgstr "" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "Affichage du calendrier" +msgstr "" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "Affichage en liste" +msgstr "" #: templates/js/translated/tables.js:112 msgid "Display tree view" @@ -13313,39 +13579,39 @@ msgstr "" #: templates/js/translated/tables.js:529 msgid "Loading data" -msgstr "Chargement des données" +msgstr "" #: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "résultats par page" +msgstr "" #: templates/js/translated/tables.js:537 msgid "Showing all rows" -msgstr "Afficher toutes les lignes" +msgstr "" #: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "Afficher" +msgstr "" #: templates/js/translated/tables.js:539 msgid "to" -msgstr "à" +msgstr "" #: templates/js/translated/tables.js:539 msgid "of" -msgstr "de" +msgstr "" #: templates/js/translated/tables.js:539 msgid "rows" -msgstr "lignes" +msgstr "" #: templates/js/translated/tables.js:546 msgid "No matching results" -msgstr "Aucun résultat correspondant n'a été trouvé" +msgstr "" #: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" -msgstr "Masquer/Afficher la pagination" +msgstr "" #: templates/js/translated/tables.js:555 msgid "Toggle" @@ -13353,11 +13619,11 @@ msgstr "" #: templates/js/translated/tables.js:558 msgid "Columns" -msgstr "Colonnes" +msgstr "" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "Tout" +msgstr "" #: templates/navbar.html:45 msgid "Buy" @@ -13463,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13545,27 +13816,27 @@ msgstr "Oui" msgid "No" msgstr "Non" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "Utilisateurs" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "Sélectionner quels utilisateurs sont assignés à ce groupe" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "Informations personnelles" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "Droits" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "Dates importantes" @@ -13609,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "Droit défini" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "Groupe" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "Vue" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "Droit de voir des éléments" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "Droit d'ajouter des éléments" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "Modifier" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Droit de modifier des élément" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "Droit de supprimer des éléments" diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po index fd855644ac..0a5f6615d0 100644 --- a/InvenTree/locale/he/LC_MESSAGES/django.po +++ b/InvenTree/locale/he/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:42\n" "Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "" @@ -43,7 +43,7 @@ msgstr "" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "" @@ -51,18 +51,18 @@ msgstr "" msgid "Enter date" msgstr "הזן תאריך סיום" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "" msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "מספרים סידוריים לא נמצאו" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "גרמנית" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "יוונית" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "אנגלית" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "ספרדית" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "ספרדית (מקסיקנית)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "צרפתית" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "עברית" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "איטלקית" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "יפנית" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "קוריאנית" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "הולנדית" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "נורווגית" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "פולנית" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "רוסית" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "שוודית" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "תאילנדית" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "טורקית" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "ווייטנאמית" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "קובץ חסר" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "חסר קישור חיצוני" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "קובץ מצורף" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "בחר קובץ לצירוף" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "בחר קובץ לצירוף" msgid "Link" msgstr "קישור" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "קישור חיצוני" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "הערה" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "הערת קובץ" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "משתמש" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "תאריך העלאה" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "חובה למלא שם קובץ" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "תיקיית קובץ שגויה" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "שם הקובץ מכיל תו '{c}' שאינו חוקי" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "שגיאה בשינוי שם פריט" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "בחירה שגויה" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "בחירה שגויה" msgid "Name" msgstr "שם" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "שם" msgid "Description" msgstr "תיאור" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "תיאור (לא חובה)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "מקור" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "המספר חייב להיות תקין" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "שם קובץ" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "גרמנית" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "יוונית" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "אנגלית" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "ספרדית" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "ספרדית (מקסיקנית)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "צרפתית" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "עברית" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "איטלקית" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "יפנית" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "קוריאנית" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "הולנדית" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "נורווגית" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "פולנית" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "רוסית" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "שוודית" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "תאילנדית" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "טורקית" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "ווייטנאמית" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "" @@ -712,7 +722,7 @@ msgstr "הוחזר" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "" msgid "Reference" msgstr "מקט" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "מקור הבנייה" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "" msgid "Part" msgstr "רכיב" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "בחר רכיב לבנייה" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "כמות בניה" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "כמות" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "מספרים סידוריים" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1985,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "לא פורטה הפעולה" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "פעולה מבוקשת לא נמצאה" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11870,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/hi/LC_MESSAGES/django.po b/InvenTree/locale/hi/LC_MESSAGES/django.po index 065bc3bc11..94feed714e 100644 --- a/InvenTree/locale/hi/LC_MESSAGES/django.po +++ b/InvenTree/locale/hi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Hindi\n" "Language: hi_IN\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "" @@ -43,7 +43,7 @@ msgstr "" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "" @@ -51,18 +51,18 @@ msgstr "" msgid "Enter date" msgstr "तारीख दर्ज करें" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "" msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "कनेक्शन त्रुटि" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "ई-मेल" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "" msgid "Link" msgstr "" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "" msgid "Name" msgstr "" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "" @@ -712,7 +722,7 @@ msgstr "" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1985,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11870,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po index 0826b972b8..6a84d83177 100644 --- a/InvenTree/locale/hu/LC_MESSAGES/django.po +++ b/InvenTree/locale/hu/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:42\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API funkciót nem találom" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Nincs jogosultságod az adatok megtekintéséhez" @@ -43,7 +43,7 @@ msgstr "Hibás mennyiség" msgid "Invalid quantity supplied ({exc})" msgstr "Hibás mennyiség ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "A hiba részleteit megtalálod az admin panelen" @@ -51,18 +51,18 @@ msgstr "A hiba részleteit megtalálod az admin panelen" msgid "Enter date" msgstr "Dátum megadása" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "A megadott elsődleges email cím nem valós." msgid "The provided email domain is not approved." msgstr "A megadott email domain nincs jóváhagyva." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Regisztráció le van tiltva." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Nem megfelelő mennyiség" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Üres sorozatszám" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Duplikált sorozatszám" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Hibás tartomány: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Csoport tartomány {group} több mint az engedélyezett ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Hibás csoport-sor: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Nem található sorozatszám" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Az egyedi sorozatszámok számának ({len(serials)}) meg kell egyeznie a mennyiséggel ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "HTML tag-ek eltávolítása ebből az értékből" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Csatlakozási hiba" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "A kiszolgáló érvénytelen státuszkóddal válaszolt" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Kivétel történt" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "A kiszolgáló érvénytelen Content-Length értéket adott" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "A kép mérete túl nagy" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "A kép letöltés meghaladja a maximális méretet" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "A kiszolgáló üres választ adott" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "A megadott URL nem egy érvényes kép fájl" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Belépés az alkalmazásba" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Bolgár" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Cseh" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Dán" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Német" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Görög" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Angol" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Spanyol" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Spanyol (Mexikói)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Fárszi/Perzsa" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Finn" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Francia" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Héber" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Magyar" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Olasz" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japán" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Koreai" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Holland" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norvég" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Lengyel" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugál" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugál (Brazíliai)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Orosz" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "Szlovák" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Szlovén" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Szerb" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Svéd" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Tháj" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Török" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnámi" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Kínai (egyszerűsített)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Kínai (Hagyományos)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "[{site_name}] Bejelentkezés" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "Email" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "Hiba a plugin validálása közben" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "A meta adatnak egy python dict objektumnak kell lennie" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Plugin meta adatok" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "JSON meta adat mező, külső pluginok számára" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Helytelenül formázott minta" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Ismeretlen formátum kulcs lett megadva" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Hiányzó formátum kulcs" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Az azonosító mező nem lehet üres" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Az azonosítónak egyeznie kell a mintával" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Azonosító szám túl nagy" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Hiányzó fájl" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Hiányzó külső link" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Melléklet" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Válaszd ki a mellekelni kívánt fájlt" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Válaszd ki a mellekelni kívánt fájlt" msgid "Link" msgstr "Link" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Link külső URL-re" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Megjegyzés" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Leírás, bővebb infó" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Felhasználó" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "feltöltés dátuma" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "A fájlnév nem lehet üres" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Érvénytelen melléklet mappa" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Fájlnévben érvénytelen karakter van '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Fájlnév kiterjesztése hiányzik" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Ilyen fájlnévvel már létezik melléklet" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Hiba a fájl átnevezésekor" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "Duplikált nevek nem lehetnek ugyanazon szülő alatt" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Érvénytelen választás" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Érvénytelen választás" msgid "Name" msgstr "Név" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,273 +531,149 @@ msgstr "Név" msgid "Description" msgstr "Leírás" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Leírás (opcionális)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "szülő" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Elérési út" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Markdown megjegyzések (opcionális)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Vonalkód adat" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Harmadik féltől származó vonalkód adat" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Vonalkód hash" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Egyedi vonalkód hash" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Létező vonalkód" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Kiszolgálóhiba" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "A kiszolgáló egy hibaüzenetet rögzített." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Érvényes számnak kell lennie" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Pénznem" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Válassz pénznemet a lehetőségek közül" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "Önnek nincs joga változtatni ezen a felhasználói szerepkörön." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "Csak a superuser-ek hozhatnak létre felhasználókat" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" -msgstr "Üdvözöljük a {current_site.name}-on" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." +msgstr "A fiókod sikeresen létrejött." -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." -msgstr "Felhasználói fiókját létrehoztuk.\n\n" -"Bejelentkezéshez használja a jelszó beállítás funkciót (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" +msgstr "Kérlek használd a jelszó visszállítás funkciót a belépéshez" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "Üdvözlet az InvenTree-ben" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Fájlnév" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Érvénytelen érték" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Adat fájl" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Fájl kiválasztása feltöltéshez" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Nem támogatott fájltípus" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Fájl túl nagy" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Nem találhatók oszlopok a fájlban" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Nincsenek adatsorok a fájlban" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Nincs adatsor megadva" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Nincs adat oszlop megadva" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Szükséges oszlop hiányzik: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplikált oszlop: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" -msgstr "" +msgstr "Távoli kép" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "A távoli kép URL-je" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Képek letöltése távoli URL-ről nem engedélyezett" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "Bolgár" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Cseh" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Dán" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Német" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Görög" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Angol" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Spanyol" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Spanyol (Mexikói)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Fárszi/Perzsa" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Finn" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Francia" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Héber" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Hindi" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Magyar" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Olasz" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japán" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Koreai" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Holland" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norvég" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Lengyel" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugál" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugál (Brazíliai)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Orosz" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Szlovén" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Svéd" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Tháj" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Török" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnámi" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Kínai (egyszerűsített)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Kínai (Hagyományos)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Háttér folyamat ellenőrzés sikertelen" @@ -713,7 +722,7 @@ msgstr "Visszaküldve" msgid "In Progress" msgstr "Folyamatban" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -876,10 +885,6 @@ msgstr "Elutasított" msgid "Unknown database" msgstr "Ismeretlen adatbázis" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Érvénytelen fizikai mértékegység" @@ -928,16 +933,16 @@ msgstr "Verzió információk" msgid "Build must be cancelled before it can be deleted" msgstr "A gyártást be kell fejezni a törlés előtt" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "Fogyóeszköz" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -949,18 +954,18 @@ msgstr "Opcionális" msgid "Tracked" msgstr "Követett" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "Lefoglalva" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -970,16 +975,16 @@ msgstr "Lefoglalva" msgid "Available" msgstr "Elérhető" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Gyártási utasítás" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -990,27 +995,27 @@ msgstr "Gyártási utasítás" msgid "Build Orders" msgstr "Gyártási utasítások" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Hibás választás a szülő gyártásra" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "Gyártási rendelés alkatrész nem változtatható" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Gyártási utasítás azonosító" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1018,27 +1023,27 @@ msgstr "Gyártási utasítás azonosító" msgid "Reference" msgstr "Azonosító" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "Gyártás rövid leírása (opcionális)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Szülő gyártás" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1049,7 +1054,7 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1057,8 +1062,8 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1082,144 +1087,144 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" msgid "Part" msgstr "Alkatrész" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Válassz alkatrészt a gyártáshoz" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Vevői rendelés azonosító" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Vevői rendelés amihez ez a gyártás hozzá van rendelve" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Forrás hely" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Válassz helyet ahonnan készletet vegyünk el ehhez a gyártáshoz (hagyd üresen ha bárhonnan)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Cél hely" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Válassz helyet ahol a kész tételek tárolva lesznek" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Gyártási mennyiség" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Gyártandó készlet tételek száma" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Kész tételek" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Elkészült készlet tételek száma" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Gyártási állapot" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Gyártás státusz kód" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Batch kód" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Batch kód a gyártás kimenetéhez" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Létrehozás dátuma" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Befejezés cél dátuma" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Cél dátum a gyártás befejezéséhez. Ez után késettnek számít majd." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Befejezés dátuma" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "elkészítette" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Indította" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Felhasználó aki ezt a gyártási utasítást kiállította" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Felelős" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "Felhasználó vagy csoport aki felelős ezért a gyártásért" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Külső link" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "Priorítás" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "Gyártási utasítás priorítása" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1228,52 +1233,52 @@ msgstr "Gyártási utasítás priorítása" msgid "Project Code" msgstr "Projektszám" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "Projekt kód a gyártáshoz" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "A {build} gyártási utasítás elkészült" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "Gyártási utasítás elkészült" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Nincs gyártási kimenet megadva" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "Gyártási kimenet már kész" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "Gyártási kimenet nem egyezik a gyártási utasítással" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "Mennyiségnek nullánál többnek kell lennie" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "A mennyiség nem lehet több mint a gyártási mennyiség" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "Gyártás objektum" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1283,15 +1288,15 @@ msgstr "Gyártás objektum" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1315,41 +1320,41 @@ msgstr "Gyártás objektum" msgid "Quantity" msgstr "Mennyiség" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "Gyártáshoz szükséges mennyiség" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Gyártási tételnek meg kell adnia a gyártási kimenetet, mivel a fő darab egyedi követésre kötelezett" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "A lefoglalt mennyiség ({q}) nem lépheti túl a szabad készletet ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "Készlet túlfoglalva" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Lefoglalt mennyiségnek nullánál többnek kell lennie" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "Egyedi követésre kötelezett tételeknél a menyiség 1 kell legyen" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "A készlet tétel nem egyezik az alkatrészjegyzékkel" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1361,89 +1366,89 @@ msgstr "A készlet tétel nem egyezik az alkatrészjegyzékkel" msgid "Stock Item" msgstr "Készlet tétel" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Forrás készlet tétel" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Készlet mennyiség amit foglaljunk a gyártáshoz" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Beépítés ebbe" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Cél készlet tétel" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "Gyártás kimenet" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "Gyártási kimenet nem egyezik a szülő gyártással" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "Kimeneti alkatrész nem egyezik a gyártási utasításban lévő alkatrésszel" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "Ez a gyártási kimenet már elkészült" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "Ez a gyártási kimenet nincs teljesen lefoglalva" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "Add meg a mennyiséget a gyártás kimenetéhez" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "Egész számú mennyiség szükséges az egyedi követésre kötelezett alkatrészeknél" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Egész számú mennyiség szükséges, mivel az alkatrészjegyzék egyedi követésre kötelezett alkatrészeket tartalmaz" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Sorozatszámok" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "Add meg a sorozatszámokat a gyártás kimenetéhez" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "Sorozatszámok automatikus hozzárendelése" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "Szükséges tételek automatikus hozzárendelése a megfelelő sorozatszámokkal" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "A következő sorozatszámok már léteznek vagy nem megfelelőek" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "A gyártási kimenetek listáját meg kell adni" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1456,32 +1461,32 @@ msgstr "A gyártási kimenetek listáját meg kell adni" msgid "Location" msgstr "Hely" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "Selejtezet gyártási kimenetek helye" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "Foglalások törlése" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "Selejtezett kimenetek foglalásainak felszabadítása" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "Selejtezés oka" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "A kész gyártási kimenetek helye" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1491,160 +1496,189 @@ msgstr "A kész gyártási kimenetek helye" msgid "Status" msgstr "Állapot" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "Hiányos foglalás elfogadása" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "Kimenetek befejezése akkor is ha a készlet nem\n" "lett teljesen lefoglalva" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "Lefoglalt készlet levonása" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "Az összes lefoglalt tétel levonása a készletről" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "Befejezetlen kimenetek törlése" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "A nem befejezett gyártási kimenetek törlése" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "Nem engedélyezett" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "Gyártásban fel lett használva" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "Foglalás felszabadítása a készre jelentés előtt" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "Túlfoglalt készlet" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Hogyan kezeljük az gyártáshoz rendelt egyéb készletet" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "Pár készlet tétel túl lett foglalva" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "Kiosztatlanok elfogadása" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Fogadd el hogy a készlet tételek nincsenek teljesen lefoglalva ehhez a gyártási utastáshoz" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "A szükséges készlet nem lett teljesen lefoglalva" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "Befejezetlenek elfogadása" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "Fogadd el hogy a szükséges számú gyártási kimenet nem lett elérve" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "Szükséges gyártási mennyiség nem lett elérve" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "A gyártási utasítás befejezetlen kimeneteket tartalmaz" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "Gyártás sor" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "Gyártás kimenet" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "A gyártási kimenetnek ugyanarra a gyártásra kell mutatnia" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "Gyártás sor tétel" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part ugyanarra az alkatrészre kell mutasson mint a gyártási utasítás" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "A tételnek kell legyen készlete" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Rendelkezésre álló mennyiség ({q}) túllépve" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "Gyártási kimenetet meg kell adni a követésre kötelezett alkatrészek lefoglalásához" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Gyártási kimenetet nem lehet megadni a követésre kötelezett alkatrészek lefoglalásához" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "A lefoglalandó tételeket meg kell adni" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Készlet hely ahonnan az alkatrészek származnak (hagyd üresen ha bárhonnan)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "Hely kizárása" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "Készlet tételek kizárása erről a kiválasztott helyről" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "Felcserélhető készlet" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "A különböző helyeken lévő készlet egyenrangúan felhasználható" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "Készlet helyettesítés" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "Helyettesítő alkatrészek foglalásának engedélyezése" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "Opcionális tételek" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "Opcionális tételek lefoglalása a gyártáshoz" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "Alkatrészjegyzék tétel" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "Lefoglalt készlet" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "Rendelve" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "Gyártásban" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "Elérhető készlet" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "A gyártási utasításhoz készlet szükséges" @@ -1770,12 +1804,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Még nincs lefoglalva a szükséges készlet" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1808,8 +1842,8 @@ msgid "Completed Outputs" msgstr "Befejezett kimenetek" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1831,7 +1865,7 @@ msgid "Issued By" msgstr "Kiállította" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "Prioritás" @@ -1859,7 +1893,7 @@ msgstr "Készlet forrás" msgid "Stock can be taken from any available location." msgstr "Készlet bármely rendelkezésre álló helyről felhasználható." -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "Cél" @@ -1872,9 +1906,9 @@ msgstr "A cél hely nincs megadva" msgid "Allocated Parts" msgstr "Lefoglalt alkatrészek" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1888,7 +1922,7 @@ msgstr "Batch" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "Létrehozva" @@ -1987,11 +2021,11 @@ msgstr "Mellékletek" msgid "Build Notes" msgstr "Gyártási megjegyzések" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "Lefoglalás kész" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "Minden sor rendben lefoglalva" @@ -2045,1410 +2079,1431 @@ msgstr "{name.title()} Fájl" msgid "Select {name} file to upload" msgstr "{name} fájl kiválasztása feltöltéshez" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "Frissítve" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Legutóbbi frissítés időpontja" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "A site URL blokkolva van a konfigurációban" + +#: common/models.py:130 msgid "Unique project code" msgstr "Egyedi projektszám" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "Projekt leírása" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "A projektért felelős felhasználó vagy csoport" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "Beállítások kulcs (egyedinek kell lennie, nem kis- nagybetű érzékeny)" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "Beállítás értéke" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "A kiválasztott érték nem egy érvényes lehetőség" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "Az érték bináris kell legyen" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "Az érték egész szám kell legyen" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "Kulcs string egyedi kell legyen" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "Nincs csoport" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "Üres domain nem engedélyezett." -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Érvénytelen domain név: {domain}" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "Nincsen plugin" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "Újraindítás szükséges" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "Egy olyan beállítás megváltozott ami a kiszolgáló újraindítását igényli" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "Függőben levő migrációk" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "Függőben levő adatbázis migrációk" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "Kiszolgáló példány neve" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "String leíró a kiszolgáló példányhoz" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "Példány név használata" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "Példány név használata a címsorban" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "Verzió infók megjelenítésének tiltása" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "Verzió infók megjelenítése csak admin felhasználóknak" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Cég neve" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "Belső cégnév" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "Kiindulási URL" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "Kiindulási URL a kiszolgáló példányhoz" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Alapértelmezett pénznem" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "Válassz alap pénznemet az ár számításokhoz" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "Árfolyam frissítési gyakoriság" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "Milyen gyakran frissítse az árfolyamokat (nulla a kikapcsoláshoz)" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "nap" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "Árfolyam frissítő plugin" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "Kiválasztott árfolyam frissítő plugin" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "Letöltés URL-ről" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "Képek és fájlok letöltésének engedélyezése külső URL-ről" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "Letöltési méret korlát" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "Maximum megengedett letöltési mérete a távoli képeknek" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "Felhasznált User-agent az URL-ről letöltéshez" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "A külső URL-ről letöltéshez használt user-agent felülbírálásának engedélyezése (hagyd üresen az alapértelmezéshez)" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" -msgstr "" +msgstr "Erős URL validáció" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" -msgstr "" +msgstr "Sablon specifikáció igénylése az URL validálásnál" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "Megerősítés igénylése" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "Kérjen felhasználói megerősítést bizonyos műveletekhez" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "Fa mélység" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "Alapértelmezett mélység a fa nézetekben. A mélyebb szintek betöltődnek ha szükségesek." -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "Frissítés keresés gyakorisága" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "Milyen gyakran ellenőrizze van-e új frissítés (0=soha)" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "Automatikus biztonsági mentés" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "Adatbázis és média fájlok automatikus biztonsági mentése" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "Automata biztonsági mentés gyakorisága" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "Hány naponta készüljön automatikus biztonsági mentés" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "Feladat törlési gyakoriság" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "Háttérfolyamat eredmények törlése megadott nap eltelte után" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "Hibanapló törlési gyakoriság" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "Hibanapló bejegyzések törlése megadott nap eltelte után" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "Értesítés törlési gyakoriság" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "Felhasználói értesítések törlése megadott nap eltelte után" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Vonalkód támogatás" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "Vonalkód olvasó támogatás engedélyezése a web felületen" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "Vonalkód beadási késleltetés" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "Vonalkód beadáskor a feldolgozás késleltetési ideje" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "Webkamerás vonalkód olvasás" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "Webkamerás kódolvasás engedélyezése a böngészőből" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "Alkatrész változatok" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "Alkatrész változat vagy verziószám tulajdonság használata" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "IPN reguláris kifejezés" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "Reguláris kifejezés ami illeszkedik az alkatrész IPN-re" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "Többször is előforduló IPN engedélyezése" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "Azonos IPN használható legyen több alkatrészre is" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "IPN szerkesztésének engedélyezése" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "IPN megváltoztatásánsak engedélyezése az alkatrész szerkesztése közben" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "Alkatrészjegyzék adatok másolása" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "Alkatrész másoláskor az alkatrészjegyzék adatokat is másoljuk alapból" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "Alkatrész paraméterek másolása" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "Alkatrész másoláskor a paramétereket is másoljuk alapból" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "Alkatrész teszt adatok másolása" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "Alkatrész másoláskor a tesztek adatait is másoljuk alapból" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "Kategória paraméter sablonok másolása" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "Kategória paraméter sablonok másolása alkatrész létrehozásakor" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Sablon" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "Alkatrészek alapból sablon alkatrészek legyenek" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Gyártmány" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "Alkatrészeket alapból lehessen gyártani másik alkatrészekből" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Összetevő" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "Alkatrészek alapból használhatók összetevőként más alkatrészekhez" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Beszerezhető" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "Alkatrészek alapból beszerezhetők legyenek" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Értékesíthető" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "Alkatrészek alapból eladhatók legyenek" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Követésre kötelezett" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "Alkatrészek alapból követésre kötelezettek legyenek" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtuális" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "Alkatrészek alapból virtuálisak legyenek" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "Importálás megjelenítése a nézetekben" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "Import segéd megjelenítése néhány alkatrész nézetben" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "Kapcsolódó alkatrészek megjelenítése" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "Alkatrész kapcsolódó alkatrészeinek megjelenítése" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "Kezdeti készlet adatok" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "Kezdeti készlet létrehozása új alkatrész felvételekor" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Kezdeti beszállítói adatok" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Kezdeti beszállítói adatok létrehozása új alkatrész felvételekor" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "Alkatrész név megjelenítés formátuma" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "Formátum az alkatrész név megjelenítéséhez" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "Alkatrész kategória alapértelmezett ikon" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "Alkatrész kategória alapértelmezett ikon (üres ha nincs)" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "Csak választható mértékegységek" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "A megadott mértékegység csak a beállított lehetőségekből legyen elfogadva" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "Áraknál használt tizedesjegyek min. száma" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Tizedejegyek minimális száma az árak megjelenítésekor" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "Áraknál használt tizedesjegyek max. száma" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Tizedejegyek maximális száma az árak megjelenítésekor" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "Beszállítói árazás használata" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Beszállítói ársávok megjelenítése az általános árkalkulációkban" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "Beszerzési előzmények felülbírálása" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Beszerzési árelőzmények felülírják a beszállítói ársávokat" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "Készlet tétel ár használata" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "A kézzel bevitt készlet tétel árak használata az árszámításokhoz" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "Készlet tétel ár kora" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Az ennyi napnál régebbi készlet tételek kizárása az árszámításból" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "Alkatrészváltozat árak használata" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "Alkatrészváltozat árak megjelenítése az általános árkalkulációkban" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "Csak az aktív változatokat" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "Csak az aktív alkatrészváltozatok használata az árazásban" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "Árazás újraszámítás gyakoriság" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "Árak automatikus frissítése ennyi nap után" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "Belső árak" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "Alkatrészekhez belső ár engedélyezése" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "Belső ár felülbírálása" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "Ha elérhetőek az árkalkulációkban a belső árak lesznek alapul véve" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "Címke nyomtatás engedélyezése" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "Címke nyomtatás engedélyezése a web felületről" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "Címke kép DPI" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "Képek felbontása amik átadásra kerülnek címkenyomtató pluginoknak" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "Riportok engedélyezése" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "Riportok előállításának engedélyezése" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "Debug mód" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "Riportok előállítása HTML formátumban (hibakereséshez)" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Lapméret" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "Alapértelmezett lapméret a PDF riportokhoz" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "Teszt riportok engedélyezése" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "Teszt riportok előállításának engedélyezése" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "Teszt riportok hozzáadása" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Teszt riport nyomtatáskor egy másolat hozzáadása a készlet tételhez" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "Globálisan egyedi sorozatszámok" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "A sorozatszámoknak egyedinek kell lennie a teljes készletre vonatkozóan" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "Sorozatszámok automatikus kitöltése" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "Sorozatszámok automatikus kitöltése a formokon" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "Kimerült készlet törlése" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "Alapértelmezett művelet mikor a készlet tétel elfogy" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "Batch kód sablon" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "Sablon a készlet tételekhez alapértelmezett batch kódok előállításához" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "Készlet lejárata" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "Készlet lejárat kezelésének engedélyezése" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "Lejárt készlet értékesítése" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "Lejárt készlet értékesítésének engedélyezése" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "Álló készlet ideje" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "Napok száma amennyivel a lejárat előtt a készlet tételeket állottnak vesszük" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "Lejárt készlet gyártása" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "Gyártás engedélyezése lejárt készletből" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "Készlet tulajdonosok kezelése" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "Tulajdonosok kezelésének engedélyezése a készlet helyekre és tételekre" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "Hely alapértelmezett ikon" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "Hely alapértelmezett ikon (üres ha nincs)" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "Beépített készlet megjelenítése" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "Beépített készlet tételek megjelenítése a készlet táblákban" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "Gyártási utasítás azonosító minta" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "Szükséges minta a gyártási utasítás azonosító mező előállításához" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "Visszavétel engedélyezése" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "Visszavételek engedélyezése a felületen" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "Visszavétel azonosító minta" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "Szükséges minta a visszavétel azonosító mező előállításához" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "Befejezett visszavétel szerkesztése" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "Visszavétel szerkesztésének engedélyezése befejezés után" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "Vevői rendelés azonosító minta" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "Szükséges minta a vevői rendelés azonosító mező előállításához" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "Vevői rendeléshez alapértelmezett szállítmány" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "Szállítmány automatikus létrehozása az új vevő rendelésekhez" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "Befejezett vevői rendelés szerkesztése" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Vevői rendelések szerkesztésének engedélyezése szállítás vagy befejezés után" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "Beszerzési rendelés azonosító minta" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "Szükséges minta a beszerzési rendelés azonosító mező előállításához" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "Befejezett beszerzési rendelés szerkesztése" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Beszérzési rendelések szerkesztésének engedélyezése kiküldés vagy befejezés után" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" -msgstr "" +msgstr "Beszerzési rendelések automatikus befejezése" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" -msgstr "" +msgstr "A beszerzési rendelés automatikus befejezése ha minden sortétel beérkezett" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "Elfelejtett jelszó engedélyezése" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "Elfelejtett jelszó funkció engedélyezése a bejentkező oldalon" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "Regisztráció engedélyezése" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "Felhaszálók önkéntes regisztrációjának engedélyezése a bejelentkező oldalon" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "SSO engedélyezése" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "SSO engedélyezése a bejelentkező oldalon" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "SSO regisztráció engedélyezése" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Felhaszálók önkéntes regisztrációjának engedélyezése SSO-n keresztül a bejelentkező oldalon" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "Email szükséges" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "Kötelező email megadás regisztrációkor" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "SSO felhasználók automatikus kitöltése" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "Felhasználó adatainak automatikus kitöltése az SSO fiókadatokból" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "Email kétszer" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "Regisztráláskor kétszer kérdezze a felhasználó email címét" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "Jelszó kétszer" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "Regisztráláskor kétszer kérdezze a felhasználó jelszavát" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "Engedélyezett domainek" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Feliratkozás korlátozása megadott domain-ekre (vesszővel elválasztva, @-al kezdve)" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "Csoport regisztráláskor" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "Csoport amihez a frissen regisztrált felhasználók hozzá lesznek rendelve" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "Többfaktoros hitelesítés kényszerítése" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "A felhasználóknak többfaktoros hitelesítést kell használniuk." -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "Pluginok ellenőrzése indításkor" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Ellenőrizze induláskor hogy minden plugin telepítve van - engedélyezd konténer környezetben (docker)" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "Plugin frissítések ellenőrzése" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "Frissítések periódikus ellenőrzésének engedélyezése a telepített pluginokra" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "URL integráció engedélyezése" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "URL útvonalalak hozzáadásának engedélyezése a pluginok számára" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "Navigációs integráció engedélyezése" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "Navigációs integráció engedélyezése a pluginok számára" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "App integráció engedélyezése" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "App hozzáadásának engedélyezése a pluginok számára" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "Ütemezés integráció engedélyezése" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "Háttérben futó feladatok hozzáadásának engedélyezése a pluginok számára" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "Esemény integráció engedélyezése" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "Belső eseményekre reagálás engedélyezése a pluginok számára" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "Projektszámok engedélyezése" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "Projektszámok használatának engedélyezése a projektek követéséhez" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "Leltár funkció" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Leltár funkció engedélyezése a készlet mennyiség és érték számításhoz" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "Külső helyek nélkül" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "Külső helyek figyelmen kívül hagyása a leltár számításoknál" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "Automatikus leltár időpontja" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Hány naponta történjen automatikus leltár (nulla egyenlő tiltva)" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "Riport törlési gyakoriság" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Régi leltár riportok törlése hány naponta történjen" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "Felhasználók teljes nevének megjelenítése" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "Felhasználói név helyett a felhasználók teljes neve jelenik meg" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "Beállítások kulcs (egyedinek kell lennie, nem kis- nagybetű érzékeny" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "Inaktív alkatrészek elrejtése" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Nem aktív alkatrészek elrejtése a kezdőlapon" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "Értesítésre beállított alkatrészek megjelenítése" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "Alkatrész értesítések megjelenítése a főoldalon" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "Értesítésre beállított kategóriák megjelenítése" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "Alkatrész kategória értesítések megjelenítése a főoldalon" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "Legújabb alkatrészek megjelenítése" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "Legújabb alkatrészek megjelenítése a főoldalon" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "Jóváhagyás nélküli alkatrészjegyzékek megjelenítése" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "Jóváhagyásra váró alkatrészjegyzékek megjelenítése a főoldalon" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "Legfrissebb készlet változások megjelenítése" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "Legutóbb megváltozott alkatrészek megjelenítése a főoldalon" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "Alacsony készlet megjelenítése" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "Alacsony készletek megjelenítése a főoldalon" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "Kimerült készlet megjelenítése" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "Kimerült készletek megjelenítése a főoldalon" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "Gyártáshoz szükséges készlet megjelenítése" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "Gyártáshoz szükséges készletek megjelenítése a főoldalon" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "Lejárt készlet megjelenítése" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "Lejárt készletek megjelenítése a főoldalon" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "Állott készlet megjelenítése" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "Álló készletek megjelenítése a főoldalon" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "Függő gyártások megjelenítése" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "Folyamatban lévő gyártások megjelenítése a főoldalon" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "Késésben lévő gyártások megjelenítése" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "Késésben lévő gyártások megjelenítése a főoldalon" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "Kintlévő beszerzési rendelések megjelenítése" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "Kintlévő beszerzési rendelések megjelenítése a főoldalon" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "Késésben lévő megrendelések megjelenítése" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "Késésben lévő megrendelések megjelenítése a főoldalon" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "Függő vevői rendelések megjelenítése" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "Függő vevői rendelések megjelenítése a főoldalon" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "Késésben lévő vevői rendelések megjelenítése" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "Késésben lévő vevői rendelések megjelenítése a főoldalon" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "Függő vevői szállítmányok megjelenítése" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "Folyamatban lévő vevői szállítmányok megjelenítése a főoldalon" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "Hírek megjelenítése" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "Hírek megjelenítése a főoldalon" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "Beágyazott címke megjelenítés" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "PDF címkék megjelenítése a böngészőben letöltés helyett" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "Alapértelmezett címkenyomtató" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "Melyik címkenyomtató legyen az alapértelmezett" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "Beágyazott riport megjelenítés" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "PDF riport megjelenítése a böngészőben letöltés helyett" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "Alkatrészek keresése" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "Alkatrészek megjelenítése a keresési előnézetben" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "Beszállítói alkatrészek keresése" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "Beszállítói alkatrészek megjelenítése a keresési előnézetben" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "Gyártói alkatrészek keresése" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "Gyártói alkatrészek megjelenítése a keresési előnézetben" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "Inaktív alkatrészek elrejtése" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "Inaktív alkatrészek kihagyása a keresési előnézet találataiból" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "Kategóriák keresése" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "Alkatrész kategóriák megjelenítése a keresési előnézetben" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "Készlet keresése" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "Készlet tételek megjelenítése a keresési előnézetben" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "Nem elérhető készlet tételek elrejtése" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "Nem elérhető készlet kihagyása a keresési előnézet találataiból" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "Helyek keresése" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "Készlet helyek megjelenítése a keresési előnézetben" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "Cégek keresése" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "Cégek megjelenítése a keresési előnézetben" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "Gyártási utasítások keresése" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "Gyártási utasítások megjelenítése a keresés előnézet ablakban" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "Beszerzési rendelések keresése" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "Beszerzési rendelések megjelenítése a keresési előnézetben" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "Inaktív beszerzési rendelések kihagyása" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "Inaktív beszerzési rendelések kihagyása a keresési előnézet találataiból" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "Vevői rendelések keresése" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "Vevői rendelések megjelenítése a keresési előnézetben" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "Inaktív vevői rendelések kihagyása" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "Inaktív vevői rendelések kihagyása a keresési előnézet találataiból" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "Visszavétel keresése" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "Visszavételek megjelenítése a keresés előnézet ablakban" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "Inaktív visszavételek kihagyása" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "Inaktív visszavételek kihagyása a keresési előnézet találataiból" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "Keresési előnézet eredményei" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "A keresési előnézetben megjelenítendő eredmények száma szekciónként" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "Regex keresés" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "Reguláris kifejezések engedélyezése a keresésekben" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "Teljes szó keresés" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "A keresések csak teljes szóra egyező találatokat adjanak" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "Mennyiség megjelenítése a formokon" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "Rendelkezésre álló alkatrész mennyiség megjelenítése néhány formon" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "ESC billentyű zárja be a formot" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "ESC billentyű használata a modális formok bezárásához" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "Rögzített menüsor" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "A menü pozíciója mindig rögzítve a lap tetején" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "Dátum formátum" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "Preferált dátum formátum a dátumok kijelzésekor" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Alkatrész ütemezés" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "Alkatrész ütemezési információk megjelenítése" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Alkatrész leltár" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Alkatrész leltár információk megjelenítése (ha a leltár funkció engedélyezett)" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "Táblázati szöveg hossz" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" -msgstr "" +msgstr "Maximális szöveg hossz ami megjelenhet a táblázatokban" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "Alapértelmezett alkatrész címke sablon" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "Az alapértelmezetten kiválasztott alkatrész címke sablon" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "Alapértelmezett készlet címke sablon" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "Az alapértelmezetten kiválasztott készlet címke sablon" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "Alapértelmezett készlethely címke sablon" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "Az alapértelmezetten kiválasztott készlethely címke sablon" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "Hibariportok fogadása" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "Értesítések fogadása a rendszerhibákról" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "Ársáv mennyiség" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Ár" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "Egységár egy meghatározott mennyiség esetén" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "Végpont" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "Végpont ahol ez a webhook érkezik" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "Webhook neve" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3456,101 +3511,101 @@ msgstr "Webhook neve" msgid "Active" msgstr "Aktív" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "Aktív-e ez a webhook" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "Token" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "Token a hozzáféréshez" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "Titok" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "Megosztott titok a HMAC-hoz" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "Üzenet azonosító" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "Egyedi azonosító ehhez az üzenethez" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "Kiszolgáló" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "Kiszolgáló ahonnan ez az üzenet érkezett" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "Fejléc" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "Üzenet fejléce" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "Törzs" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "Üzenet törzse" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "Végpont amin ez az üzenet érkezett" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "Dolgozott rajta" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "Befejeződött a munka ezzel az üzenettel?" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "Id" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Cím" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "Közzétéve" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "Szerző" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "Összefoglaló" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "Elolvasva" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "Elolvasva?" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3560,31 +3615,31 @@ msgstr "Elolvasva?" msgid "Image" msgstr "Kép" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "Képfájl" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "A mértékegységnek valós azonosítónak kell lennie" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "Egység neve" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Szimbólum" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "Opcionális mértékegység szimbólum" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definíció" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "Mértékegység definíció" @@ -3622,6 +3677,66 @@ msgstr "Készlet érkezett vissza egy visszavétel miatt" msgid "Error raised by plugin" msgstr "Plugin hiba" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "Folyamatban" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "Folyamatban lévő feladatok" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "Ütemezett Feladatok" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "Hibás feladatok" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "Feladat ID" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "Egyedi feladat ID" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "Zárol" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "Zárolási idő" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "Feladat neve" + +#: common/serializers.py:372 +msgid "Function" +msgstr "Funkció" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "Funkció neve" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "Paraméterek" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "Feladat paraméterei" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "Kulcsszó paraméterek" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "Feladat kulcsszó paraméterek" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3660,184 +3775,184 @@ msgstr "Importált alkatrészek" msgid "Previous Step" msgstr "Előző lépés" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "Cég leírása" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "A cég leírása" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "Weboldal" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "Cég weboldala" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Telefonszám" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "Kapcsolattartó telefonszáma" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "Kapcsolattartó email címe" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Névjegy" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "Kapcsolattartó" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "Link a külső céginformációhoz" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "vevő-e" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "Értékesítesz alkatrészeket ennek a cégnek?" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "beszállító-e" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "Vásárolsz alkatrészeket ettől a cégtől?" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "gyártó-e" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "Gyárt ez a cég alkatrészeket?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "Cég által használt alapértelmezett pénznem" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Cég" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "Cég kiválasztása" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "Cím megnevezése" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "Címhez tartozó leírás, megnevezés" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "Elsődleges cím" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "Beállítás elsődleges címként" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "1. sor" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "Cím első sora" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "2. sor" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "Cím második sora" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "Irányítószám" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "Város/Régió" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "Irányítószám város/régió" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "Állam/Megye" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "Állam vagy megye" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "Ország" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "Cím országa" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "Megjegyzés a futárnak" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "Futárnak szóló megjegyzések" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "Belső szállítási megjegyzések" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "Szállítási megjegyzések belső használatra" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "Link a címinformációkhoz (külső)" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Kiindulási alkatrész" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "Válassz alkatrészt" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3849,11 +3964,11 @@ msgstr "Válassz alkatrészt" msgid "Manufacturer" msgstr "Gyártó" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Gyártó kiválasztása" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3864,67 +3979,67 @@ msgstr "Gyártó kiválasztása" msgid "MPN" msgstr "MPN" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "Gyártói cikkszám" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "URL link a gyártói alkatrészhez" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "Gyártói alkatrész leírása" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Gyártói alkatrész" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "Paraméter neve" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Érték" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "Paraméter értéke" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "Mértékegység" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "Paraméter mértékegység" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "A csomagolási egységnek kompatibilisnek kell lennie az alkatrész mértékegységgel" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "Csomagolási mennyiségnek nullánál többnek kell lennie" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "Kapcsolódó gyártói alkatrésznek ugyanarra a kiindulási alkatrészre kell hivatkoznia" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3939,58 +4054,58 @@ msgstr "Kapcsolódó gyártói alkatrésznek ugyanarra a kiindulási alkatrészr msgid "Supplier" msgstr "Beszállító" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Beszállító kiválasztása" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "Beszállítói cikkszám" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "Gyártói alkatrész kiválasztása" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "URL link a beszállítói alkatrészhez" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "Beszállítói alkatrész leírása" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "Megjegyzés" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "alap költség" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimális díj (pl. tárolási díj)" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Csomagolás" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "Alkatrész csomagolás" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -4000,27 +4115,27 @@ msgstr "Alkatrész csomagolás" msgid "Pack Quantity" msgstr "Csomagolási mennyiség" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "Egy csomagban kiszállítható mennyiség, hagyd üresen az egyedi tételeknél." -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "többszörös" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "Többszörös rendelés" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "Beszállítónál elérhető mennyiség" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "Elérhetőség frissítve" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "Utolsó elérhetőségi adat frissítés" @@ -4082,10 +4197,10 @@ msgstr "Kép letöltése URL-ről" msgid "Delete image" msgstr "Kép törlése" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4100,7 +4215,7 @@ msgstr "Vevő" msgid "Uses default currency" msgstr "Alapértelmezett pénznemet használja" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4345,7 +4460,7 @@ msgid "Addresses" msgstr "Címek" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4447,7 +4562,7 @@ msgstr "Alkatrész elérhetőség frissítése" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4486,6 +4601,10 @@ msgstr "Cégek" msgid "New Company" msgstr "Új cég" +#: label/api.py:247 +msgid "Error printing label" +msgstr "Címkenyomtatási hiba" + #: label/models.py:115 msgid "Label name" msgstr "Címke neve" @@ -4502,7 +4621,7 @@ msgstr "Címke" msgid "Label template file" msgstr "Címke sablon fájl" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "Engedélyezve" @@ -4526,7 +4645,7 @@ msgstr "Magasság [mm]" msgid "Label height, specified in mm" msgstr "Címke magassága, mm-ben" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "Fájlnév minta" @@ -4540,8 +4659,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "Lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "Szűrők" @@ -4558,7 +4677,108 @@ msgstr "QR kód" msgid "QR code" msgstr "QR kód" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "Ismeretlen" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4571,7 +4791,7 @@ msgstr "Teljes ár" msgid "No matching purchase order found" msgstr "Nincs egyező beszerzési rendelés" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4585,7 +4805,7 @@ msgstr "Nincs egyező beszerzési rendelés" msgid "Purchase Order" msgstr "Beszerzési rendelés" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4594,192 +4814,188 @@ msgstr "Beszerzési rendelés" msgid "Return Order" msgstr "Visszavétel" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "Ismeretlen" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "A rendelés teljes ára" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "Rendelés pénzneme" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "Megrendeléshez használt pénznem (hagyd üresen a cégnél alapértelmezetthez)" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "A kapcsolattartó nem egyezik a kiválasztott céggel" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "Rendelés leírása (opcionális)" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "Válassz projektszámot ehhez a rendeléshez" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "Link külső weboldalra" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Várt teljesítési dátuma a megrendelésnek. Ezután már késésben lévőnek számít majd." -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "Készítette" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "Felhasználó vagy csoport aki felelőse ennek a rendelésnek" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "Kapcsolattartó ehhez a rendeléshez" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "Cég címei ehhez a rendeléshez" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "Rendelés azonosító" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "Beszerzési rendelés állapota" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "Cég akitől a tételek beszerzésre kerülnek" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "Beszállítói azonosító" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "Beszállítói rendelés azonosító kód" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "érkeztette" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "Kiállítás dátuma" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "Kiállítás dátuma" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "Rendelés teljesítési dátuma" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "Az alkatrész beszállítója meg kell egyezzen a beszerzési rendelés beszállítójával" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "Mennyiség pozitív kell legyen" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "Cég akinek a tételek értékesítésre kerülnek" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "Vevői azonosító " -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "Megrendelés azonosító kódja a vevőnél" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "Kiszállítás dátuma" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "szállította" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "A rendelés nem teljesíthető mivel nincs hozzárendelve alkatrész" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "Csak nyitott rendelés jelölhető késznek" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "A rendelés nem jelölhető késznek mivel függő szállítmányok vannak" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "A rendelés nem jelölhető késznek mivel nem teljesített sortételek vannak" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "Tétel mennyiség" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "Sortétel azonosító" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "Sortétel megjegyzései" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "Cél dátuma ennek a sortételnek (hagyd üresen a rendelés céldátum használatához)" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "Sortétel leírása (opcionális)" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "Kontextus" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "További kontextus ehhez a sorhoz" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "Egységár" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "Beszállítói alkatrésznek egyeznie kell a beszállítóval" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "törölve" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "Rendelés" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "Beszállítói alkatrész" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4789,325 +5005,325 @@ msgstr "Beszállítói alkatrész" msgid "Received" msgstr "Beérkezett" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "Érkezett tételek száma" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Beszerzési ár" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "Beszerzési egységár" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "Mit szeretne a vevő hol tároljuk ezt az alkatrészt?" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "Virtuális alkatrészt nem lehet vevői rendeléshez adni" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "Csak értékesíthető alkatrészeket lehet vevői rendeléshez adni" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Eladási ár" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "Eladási egységár" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "Szállított mennyiség" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "Szállítás dátuma" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "Szállítási dátum" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "Kézbesítés dátuma" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "Ellenőrizte" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "Felhasználó aki ellenőrizte ezt a szállítmányt" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Szállítmány" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "Szállítmány száma" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "Nyomkövetési szám" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "Szállítmány nyomkövetési információ" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "Számlaszám" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "Hozzátartozó számla referencia száma" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "Szállítmány már elküldve" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "Szállítmány nem tartalmaz foglalt készlet tételeket" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "Készlet tétel nincs hozzárendelve" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "Nem foglalható készlet egy másik fajta alkatrész sortételéhez" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "Nem foglalható készlet egy olyan sorhoz amiben nincs alkatrész" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "A lefoglalandó mennyiség nem haladhatja meg a készlet mennyiségét" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "Egyedi követésre kötelezett tételeknél a menyiség 1 kell legyen" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "Vevői rendelés nem egyezik a szállítmánnyal" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "Szállítmány nem egyezik a vevői rendeléssel" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "Sor" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "Vevői rendelés szállítmány azonosító" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "Tétel" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "Válaszd ki a foglalásra szánt készlet tételt" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "Készlet foglalási mennyiség megadása" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "Visszavétel azonosító" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "Cég akitől a tételek visszavételre kerülnek" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "Visszavétel állapota" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "Csak szériaszámos tételek rendelhetők visszaszállítási utasításhoz" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "Válaszd ki a vevőtől visszavenni kívánt tételt" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "Visszavétel dátuma" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "Mikor lett visszavéve a tétel" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Kimenetel" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "Sortétel végső kimenetele" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "Sortétel visszaküldésének vagy javításának költsége" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "A rendelést nem lehet törölni" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "Rendelés lezárása teljesítetlen sortételek esetén is" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "A rendelésben teljesítetlen sortételek vannak" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "A rendelés nem nyitott" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "Beszérzési ár pénzneme" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "Beszállítói alkatrészt meg kell adni" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "Beszerzési rendelést meg kell adni" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "A beszállítónak egyeznie kell a beszerzési rendelésben lévővel" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "A beszerzési rendelésnek egyeznie kell a beszállítóval" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "Sortétel" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "Sortétel nem egyezik a beszerzési megrendeléssel" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "Válassz cél helyet a beérkezett tételeknek" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "Írd be a batch kódját a beérkezett tételeknek" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "Írd be a sorozatszámokat a beérkezett tételekhez" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Vonalkód" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "Beolvasott vonalkód" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "Ez a vonalkód már használva van" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "Egész számú mennyiség szükséges az egyedi követésre kötelezett alkatrészeknél" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "Sortételt meg kell adni" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "A cél helyet kötelező megadni" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "Megadott vonalkódoknak egyedieknek kel lenniük" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "Eladási ár pénzneme" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "Nincsenek szállítmány részletek megadva" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "Sortétel nincs hozzárendelve ehhez a rendeléshez" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "Mennyiség pozitív kell legyen" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "Írd be a sorozatszámokat a kiosztáshoz" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "Szállítmány kiszállítva" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "Szállítmány nincs hozzárendelve ehhez a rendeléshez" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "Nincs találat a következő sorozatszámokra" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "A következő sorozatszámok már ki lettek osztva" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "Visszavétel sortétel" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "Sortétel nem egyezik a visszavétellel" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "A sortétel már beérkezett" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "Csak folyamatban lévő megrendelés tételeit lehet bevételezni" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "Sortétel pénzneme" @@ -5291,8 +5507,8 @@ msgstr "Kijelöltek másolása" #: 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5511,13 +5727,13 @@ msgstr "A {part} egységára {price}-ra módosítva" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "A {part} alkatrész módosított egységára {price} mennyisége pedig {qty}" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "Alkatrész ID" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "Alkatrész neve" @@ -5525,20 +5741,20 @@ msgstr "Alkatrész neve" msgid "Part Description" msgstr "Alkatrész leírása" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "IPN" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Változat" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Kulcsszavak" @@ -5563,11 +5779,11 @@ msgstr "Alapértelmezett készlethely ID" msgid "Default Supplier ID" msgstr "Alapértelmezett beszállító ID" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Ebből a sablonból" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimális készlet" @@ -5577,33 +5793,26 @@ msgstr "Minimális készlet" msgid "In Stock" msgstr "Készleten" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "Rendelve" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "Felhasználva ebben" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "Gyártásban" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "Minimum költség" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "Maximum költség" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "Szülő ID" @@ -5616,7 +5825,7 @@ msgstr "Szülő neve" msgid "Category Path" msgstr "Kategória elérési út" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5639,51 +5848,51 @@ msgstr "Alkatrészjegyzék tétel ID" msgid "Parent IPN" msgstr "Szülő IPN" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "Alkatrész IPN" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Minimum ár" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Maximum ár" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "Beérkező beszerzési rendelés" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "Kimenő vevői rendelés" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "Gyártással előállított készlet" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "A gyártási utasításhoz szükséges készlet" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "Érvényes" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "Teljes alkatrészjegyzék jóváhagyása" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "Ennek az opciónak ki kll lennie választva" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Alapértelmezett hely" @@ -5692,380 +5901,375 @@ msgstr "Alapértelmezett hely" msgid "Total Stock" msgstr "Teljes készlet" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "Elérhető készlet" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "Add meg a mennyiséget az árszámításhoz" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Alkatrész kategória" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "Alkatrész kategóriák" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "Ebben a kategóriában lévő alkatrészek helye alapban" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Szerkezeti" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "A szerkezeti alkatrész kategóriákhoz nem lehet direktben alkatrészeket hozzáadni, csak az alkategóriáikhoz." -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "Alapértelmezett kulcsszavak" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "Ebben a kategóriában évő alkatrészek kulcsszavai alapban" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Ikon" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "Ikon (opcionális)" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "Nem lehet az alkatrészkategóriát szerkezeti kategóriává tenni, mert már vannak itt alkatrészek!" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "Hibás választás a szülő alkatrészre" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "Az '{self}' alkatrész nem használható a '{parent}' alkatrészjegyzékében (mert rekurzív lenne)" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "Az '{parent}' alkatrész szerepel a '{self}' alkatrészjegyzékében (rekurzív)" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "Az IPN belső cikkszámnak illeszkednie kell a {pattern} regex mintára" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "Létezik már készlet tétel ilyen a sorozatszámmal" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "Azonos IPN nem engedélyezett az alkatrészekre, már létezik ilyen" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "Ilyen nevű, IPN-ű és reviziójú alkatrész már létezik." -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "Szerkezeti kategóriákhoz nem lehet alkatrészeket rendelni!" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "Alkatrész neve" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "Sablon-e" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "Ez egy sablon alkatrész?" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "Ez az alkatrész egy másik változata?" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "Alkatrész leírása (opcionális)" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "Alkatrész kulcsszavak amik segítik a megjelenést a keresési eredményekben" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "Kategória" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "Alkatrész kategória" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "Belső cikkszám" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "Alkatrész változat vagy verziószám (pl. szín, hossz, revízió, stb.)" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "Alapban hol tároljuk ezt az alkatrészt?" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Alapértelmezett beszállító" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "Alapértelmezett beszállítói alkatrész" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "Alapértelmezett lejárat" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "Lejárati idő (napban) ennek az alkatrésznek a készleteire" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "Minimálisan megengedett készlet mennyiség" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "Alkatrész mértékegysége" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "Gyártható-e ez az alkatrész más alkatrészekből?" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "Felhasználható-e ez az alkatrész más alkatrészek gyártásához?" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "Kell-e külön követni az egyes példányait ennek az alkatrésznek?" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "Rendelhető-e ez az alkatrész egy külső beszállítótól?" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "Értékesíthető-e önmagában ez az alkatrész a vevőknek?" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "Aktív-e ez az alkatrész?" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "Ez egy virtuális nem megfogható alkatrész, pl. szoftver vagy licenc?" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "Alkatrészjegyzék ellenőrző összeg" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "Tárolt alkatrészjegyzék ellenőrző összeg" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "Alkatrészjegyzéket ellenőrizte" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "Alkatrészjegyzék ellenőrzési dátuma" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "Létrehozó" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "Alkatrész felelőse" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Utolsó leltár" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "Több értékesítése" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "Árszámítások gyorstárazásához használt pénznem" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "Minimum alkatrészjegyzék költség" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "Összetevők minimum költsége" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "Maximum alkatrészjegyzék költség" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "Összetevők maximum költsége" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "Minimum beszerzési ár" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "Eddigi minimum beszerzési költség" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "Maximum beszerzési ár" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "Eddigi maximum beszerzési költség" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "Minimum belső ár" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "Minimum költség a belső ársávok alapján" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "Maximum belső ár" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "Maximum költség a belső ársávok alapján" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "Minimum beszállítói ár" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "Minimum alkatrész ár a beszállítóktól" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "Maximum beszállítói ár" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "Maximum alkatrész ár a beszállítóktól" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "Minimum alkatrészváltozat ár" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "Alkatrészváltozatok számolt minimum költsége" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "Maximum alkatrészváltozat ár" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "Alkatrészváltozatok számolt maximum költsége" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "Minimum költség felülbírálása" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "Maximum költség felülbírálása" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "Számított általános minimum költség" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "Számított általános maximum költség" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "Minimum eladási ár" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "Minimum eladási ár az ársávok alapján" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "Maximum eladási ár" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "Maximum eladási ár az ársávok alapján" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "Minimum eladási költség" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "Eddigi minimum eladási ár" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "Maximum eladási költség" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "Eddigi maximum eladási ár" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "Leltározható alkatrész" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "Tételszám" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "Egyedi készlet tételek száma a leltárkor" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "Teljes készlet a leltárkor" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6077,322 +6281,318 @@ msgstr "Teljes készlet a leltárkor" msgid "Date" msgstr "Dátum" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "Leltározva ekkor" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "További megjegyzések" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "Leltározta" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "Minimum készlet érték" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "Becsült minimum raktárkészlet érték" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "Maximum készlet érték" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "Becsült maximum raktárkészlet érték" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Riport" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "Leltár riport fájl (generált)" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Alkatrész szám" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "Leltározott alkatrészek száma" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "Felhasználó aki a leltár riportot kérte" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "Teszt sablont csak követésre kötelezett alkatrészhez lehet csinálni" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "Erre az alkatrészre már létezik teszt ilyen névvel" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "Teszt név" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "Add meg a teszt nevét" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "Teszt leírása" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "Adj hozzá egy leírást ehhez a teszthez" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Kötelező" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "Szükséges-e hogy ez a teszt sikeres legyen?" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "Kötelező érték" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "Szükséges-e hogy ennek a tesztnek az eredményéhez kötelezően érték legyen rendelve?" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "Kötelező melléklet" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "Szükséges-e hogy ennek a tesztnek az eredményéhez kötelezően fájl melléklet legyen rendelve?" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "Jelölőnégyzet paraméternek nem lehet mértékegysége" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "Jelölőnégyzet paraméternek nem lehetnek választási lehetőségei" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "A lehetőségek egyediek kell legyenek" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "A paraméter sablon nevének egyedinek kell lennie" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "Paraméter neve" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "Paraméter mértékegysége" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "Paraméter leírása" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "Jelölőnégyzet" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "Ez a paraméter egy jelölőnégyzet?" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "Lehetőségek" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "Választható lehetőségek (vesszővel elválasztva)" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "Hibás választás a paraméterre" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "Szülő alkatrész" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Paraméter sablon" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "Adat" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "Paraméter értéke" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Alapértelmezett érték" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "Alapértelmezett paraméter érték" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "Alkatrész ID vagy alkatrész név" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "Egyedi alkatrész ID értéke" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "Alkatrész IPN érték" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "Szint" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "Alkatrészjegyzék szint" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "Alkatrészjegyzék tétel" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "Szülő alkatrész kiválasztása" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "Al alkatrész" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "Válaszd ki az alkatrészjegyzékben használandó alkatrészt" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "Ez az alkatrészjegyzék tétel opcionális" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "Ez az alkatrészjegyzék tétel fogyóeszköz (készlete nincs követve a gyártásban)" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Többlet" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Becsült gyártási veszteség (abszolút vagy százalékos)" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "Alkatrészjegyzék tétel azonosító" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "Alkatrészjegyzék tétel megjegyzései" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "Ellenőrző összeg" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "Alkatrészjegyzék sor ellenőrző összeg" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Jóváhagyva" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "Ez a BOM tétel jóvá lett hagyva" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "Öröklődött" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Ezt az alkatrészjegyzék tételt az alkatrész változatok alkatrészjegyzékei is öröklik" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Változatok" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Alkatrészváltozatok készlet tételei használhatók ehhez az alkatrészjegyzék tételhez" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "A mennyiség egész szám kell legyen a követésre kötelezett alkatrészek esetén" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "Al alkatrészt kötelező megadni" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "Alkatrészjegyzék tétel helyettesítő" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "A helyettesítő alkatrész nem lehet ugyanaz mint a fő alkatrész" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "Szülő alkatrészjegyzék tétel" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "Helyettesítő alkatrész" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "1.rész" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "2.rész" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "Válassz kapcsolódó alkatrészt" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "Alkatrész kapcsolat nem hozható létre önmagával" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "Már létezik duplikált alkatrész kapcsolat" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "Beszerzési pénzneme ennek a készlet tételnek" @@ -6488,197 +6688,197 @@ msgstr "Van már ilyen gyártói alkatrész" msgid "Supplier part matching this SKU already exists" msgstr "Van már ilyen beszállítói alkatrész" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Alkatrész másolása" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "Kezdeti adatok másolása egy másik alkatrészről" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Kezdeti készlet" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "Kezdeti készlet mennyiség létrehozása" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "Beszállító információ" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "Kezdeti beszállító adatok hozzáadása" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "Kategória paraméterek másolása" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "Paraméter sablonok másolása a kiválasztott alkatrész kategóriából" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" -msgstr "" +msgstr "Meglévő kép" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" -msgstr "" +msgstr "A meglévő alkatrész képfájl neve" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" -msgstr "" +msgstr "A képfájl nem létezik" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "Leltár riport korlátozása bizonyos alkatrészre és variánsra" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "Leltár riport korlátozása bizonyos alkatrész kategóriára és az alatta lévőkre" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "Leltár riport korlátozása bizonyos készlethelyre és az alatta lévőkre" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "Külső készlet nélkül" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "Külső helyeken lévő készlet nélkül" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "Riport létrehozása" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "Riport fájl létrehozása a számított leltár adatokkal" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "Alaktrészek frissítése" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "Megadott alkatrészek frissítése a számított leltár adatokkal" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "Leltár funkció nincs engedélyezve" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "Számított minimum ár felülbírálása" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "Minimum ár pénzneme" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "Számított maximum ár felülbírálása" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "Maximum ár pénzneme" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "Frissítés" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "Alkatrész árak frissítése" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "Megadott pénznem átváltása {default_currency}-re sikertelen" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "A Minimum ár nem lehet nagyobb mint a Maximum ár" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "A Maximum ár nem lehet kisebb mint a Minimum ár" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "Válassz alkatrészt ahonnan az alkatrészjegyzéket másoljuk" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "Létező adat törlése" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "Meglévő alkatrészjegyzék tételek törlése a másolás előtt" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "Örököltekkel együtt" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "Sablon alkatrészektől örökölt alkatrészjegyzék tételek használata" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "Hibás sorok kihagyása" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "Engedély a hibás sorok kihagyására" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "Helyettesítő alkatrészek másolása" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "Helyettesítő alkatrészek másolása az alkatrészjegyzék tételek másolásakor" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "Meglévő alkatrészjegyzék törlése" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "Meglévő alkatrészjegyzék tételek törlése a feltöltés előtt" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "Nincs megadva alkatrész oszlop" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "Több egyező alkatrész is található" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "Nincs egyező alkatrész" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "Az alkatrész nem lett összetevőként jelölve" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "Mennyiség nincs megadva" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "Érvénytelen mennyiség" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "Legalább egy alkatrészjegyzék tétel szükséges" @@ -6724,11 +6924,11 @@ msgstr "A alkatrészhez tartozó alkatrészjegyzék megváltozott és jóvá kel #: part/templates/part/bom.html:17 #, python-format msgid "This BOM was last checked by %(checker)s on %(check_date)s" -msgstr "" +msgstr "Ezt az alkatrészjegyzéket utoljára %(checker)s ellenőrizte %(check_date)s-n" #: part/templates/part/bom.html:21 msgid "This BOM has not been validated." -msgstr "" +msgstr "Ez az alkatrészjegyzék még nincs jóváhagyva." #: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" @@ -6839,7 +7039,7 @@ msgid "Add stocktake information" msgstr "Leltár információ hozzáadása" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7131,10 +7331,6 @@ msgstr "Alkatrész QR kódja" msgid "Link Barcode to Part" msgstr "Vonalkód hozzárendelése az alkatrészhez" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "alkatrész" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "Számítás" @@ -7249,7 +7445,7 @@ msgstr "Alkatrész árazás felülbírálása" msgid "Edit" msgstr "Szerkesztés" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7403,11 +7599,15 @@ msgstr "Az alkatrész képe nem található" msgid "Part Pricing" msgstr "Alkatrész árak" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "Plugin nem törölhető mivel még aktív" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "Nincs megadva művelet" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Nincs egyező művelet" @@ -7451,32 +7651,32 @@ msgstr "Beszállítói vonalkód nem található" #: plugin/base/barcodes/api.py:467 msgid "Multiple matching line items found" -msgstr "" +msgstr "Több egyező sortétel is található" #: plugin/base/barcodes/api.py:470 msgid "No matching line item found" -msgstr "" +msgstr "Nincs egyező sortétel" #: plugin/base/barcodes/api.py:508 plugin/base/barcodes/api.py:515 msgid "Barcode does not match an existing stock item" -msgstr "" +msgstr "Vonalkód nem egyezik egy létező készlet tétellel sem" #: plugin/base/barcodes/api.py:526 msgid "Stock item does not match line item" -msgstr "" +msgstr "Készlet tétel nem egyezik a sortétellel" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "Nincs elegendő" #: plugin/base/barcodes/api.py:559 msgid "Stock item allocated to sales order" -msgstr "" +msgstr "Készlet tétel lefoglalva egy vevői rendeléshez" #: plugin/base/barcodes/api.py:563 msgid "Not enough information" -msgstr "" +msgstr "Nincs elég információ" #: plugin/base/barcodes/mixins.py:147 plugin/base/barcodes/mixins.py:179 msgid "Found multiple matching supplier parts for barcode" @@ -7514,7 +7714,7 @@ msgstr "Beolvasott vonalkód" #: plugin/base/barcodes/serializers.py:81 msgid "Purchase Order to allocate items against" -msgstr "" +msgstr "Tételekhez rendelendő Beszerzési Rendelés" #: plugin/base/barcodes/serializers.py:87 msgid "Purchase order is not pending" @@ -7538,32 +7738,44 @@ msgstr "Struktúrális hely nem választható" #: plugin/base/barcodes/serializers.py:139 msgid "Sales Order to allocate items against" -msgstr "" +msgstr "Tételekhez rendelendő Vevői Rendelés" #: plugin/base/barcodes/serializers.py:145 msgid "Sales order is not pending" -msgstr "" +msgstr "Vevői rendelés nincs függőben" #: plugin/base/barcodes/serializers.py:153 msgid "Sales order line item to allocate items against" -msgstr "" +msgstr "Tételekhez rendelendő vevői rendelés sortétel" #: plugin/base/barcodes/serializers.py:160 msgid "Sales order shipment to allocate items against" -msgstr "" +msgstr "Tételekhez rendelendő vevői rendelés szállítmány" #: plugin/base/barcodes/serializers.py:166 msgid "Shipment has already been delivered" -msgstr "" +msgstr "Szállítmány kiszállítva" #: plugin/base/barcodes/serializers.py:171 msgid "Quantity to allocate" -msgstr "" +msgstr "Lefoglalandó mennyiség" #: plugin/base/label/label.py:39 msgid "Label printing failed" msgstr "Címkenyomtatás sikertelen" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "A címke PDF nyomtatása sikertelen" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "A címke HTML nyomtatása sikertelen" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "A címke PNG nyomtatása sikertelen" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "InventTree vonalkódok" @@ -7576,6 +7788,7 @@ msgstr "Alapvető vonalkód támogatást ad" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7644,17 +7857,33 @@ msgstr "Debug mód" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "Debug mód engedélyezése - nyers HTML-t ad vissza PDF helyett" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "Címke oldal méret" #: plugin/builtin/labels/label_sheet.py:34 msgid "Skip Labels" -msgstr "" +msgstr "Címkék kihagyása" #: plugin/builtin/labels/label_sheet.py:35 msgid "Skip this number of labels when printing label sheets" -msgstr "" +msgstr "Hagyjon ki ennyi számú címkét a címke ívek nyomtatásakor" #: plugin/builtin/labels/label_sheet.py:41 msgid "Border" @@ -7664,7 +7893,7 @@ msgstr "Szegély" msgid "Print a border around each label" msgstr "Az egyes címkék körüli margó" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "Fekvő" @@ -7736,84 +7965,112 @@ msgstr "TME vonalkódok támogatása" msgid "The Supplier which acts as 'TME'" msgstr "A 'TME' beszállító" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" -msgstr "Hozzáférés megtagadva: csak személyzet felhasználók telepíthetnek plugineket" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" +msgstr "Csak a személyzeti felhasználók adminisztrálhatják a pluginokat" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "Plugin telepítése sikeres" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "Plugin telepítve ide: {path}" -#: plugin/installer.py:203 -msgid "Plugin installation failed" -msgstr "Plugin telepítés sikertelen" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" +msgstr "Ez a plugin nem található a tárolóban" -#: plugin/models.py:29 +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "A plugin nem egy csomagolt plugin" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "Plugin csomag neve nem található" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "Plugin nem eltávolítható mivel még aktív" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" +msgstr "Plugin eltávolítása sikeres" + +#: plugin/models.py:30 msgid "Plugin Configuration" msgstr "Plugin beállítás" -#: plugin/models.py:30 +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "Plugin beállítások" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "Kulcs" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "Plugin kulcsa" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "PluginNeve a pluginnak" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "Csomag neve" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "A telepített csomag neve, ha a plugin a PIP-el lett telepítve" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "Aktív-e a plugin" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "Beépítve" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "Példa plugin" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "Beépített plugin" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "Csomag plugin" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Plugin" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "Módszer" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "Nincs szerző" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "A '{p}' plugin nem kompatibilis az aktuális applikáció verzióval {v}" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "A pluginhoz minimum {v} verzió kell" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "A pluginhoz maximum {v} verzió kell" @@ -7858,70 +8115,84 @@ msgstr "Minta árfolyamváltó plugin" msgid "InvenTree Contributors" msgstr "InvenTree fejlesztők" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "Forrás URL" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Csomag forrása - ez lehet egy registry vagy VCS útvonal" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "Csomag neve" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Plugin csomag neve - verzió megjelölést is tartalmazhat" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "Verzió" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "Verzió azonosító a pluginhoz. Hagyd üresen a legújabb verzióhoz." + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "Bővítmény telepítésének megerősítése" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Ez telepíti ezt a plugint az aktuális példányra. A példány karbantartási módba megy." -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "Tlepítés nincs megerősítve" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "Vagy csomag nevet vagy URL-t meg kell adni" -#: plugin/serializers.py:139 -msgid "Full reload" -msgstr "" - -#: plugin/serializers.py:140 -msgid "Perform a full reload of the plugin registry" -msgstr "" - -#: plugin/serializers.py:146 -msgid "Force reload" -msgstr "" - -#: plugin/serializers.py:148 -msgid "Force a reload of the plugin registry, even if it is already loaded" -msgstr "" - -#: plugin/serializers.py:155 -msgid "Collect plugins" -msgstr "" - #: plugin/serializers.py:156 -msgid "Collect plugins and add them to the registry" -msgstr "" +msgid "Full reload" +msgstr "Teljes újratöltés" -#: plugin/serializers.py:178 +#: plugin/serializers.py:157 +msgid "Perform a full reload of the plugin registry" +msgstr "A plugin tárolók teljes újratöltése" + +#: plugin/serializers.py:163 +msgid "Force reload" +msgstr "Kényszerített újratöltés" + +#: plugin/serializers.py:165 +msgid "Force a reload of the plugin registry, even if it is already loaded" +msgstr "Akkor is töltse újra a plugin tárolót ha már be lett töltve" + +#: plugin/serializers.py:172 +msgid "Collect plugins" +msgstr "Pluginok begyűjtése" + +#: plugin/serializers.py:173 +msgid "Collect plugins and add them to the registry" +msgstr "Pluginok begyűjtése és a tárolóhoz adása" + +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "Plugin aktiválása" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "Plugin bekapcsolása" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "Konfiguráció törlése" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "Plugin konfiguráció törlése az adatbázisból" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "Nincs érvényes objektum megadva a sablonhoz" @@ -7951,103 +8222,103 @@ msgstr "Jogi információk" msgid "Letter" msgstr "„Letter” méret" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "Sablon neve" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "Riport sablon fájl" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "Riport sablon leírása" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "Riport verziószáma (automatikusan nő)" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "Lapméret a PDF riportokhoz" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "Jelentés fekvő nézetben" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "Minta a riport fájlnevek előállításához" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "Riport sablon engedélyezve" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Készlet lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "Beépített tesztekkel együtt" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "Gyártmányba beépített készlet tételek teszt eredményeivel együtt" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "Gyártás szűrők" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Gyártás lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "Alkatrész szűrők" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Alkatrész lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "Megrendelés lekérdezés szűrők" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "Vevő rendelés lekérdezés szűrők" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "Visszavétel lekérdezés szűrők" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "Részlet" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "Riport részlet fájl" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "Részlet fájl leírása" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "Eszköz" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "Riport asset fájl" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "Asset fájl leírása" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "készlethely lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)" @@ -8088,9 +8359,9 @@ msgstr "Összesen" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8114,12 +8385,12 @@ msgid "Test Results" msgstr "Teszt eredmények" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "Teszt" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "Eredmény" @@ -8145,32 +8416,32 @@ msgid "Installed Items" msgstr "Beépített tételek" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Sorozatszám" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "A fájl nem létezik" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "A képfile nem található" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "part_image elem csak alkatrész példánynál használható" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "company_image elem csak cég példánynál használható" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "Hely ID" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "Hely neve" @@ -8179,56 +8450,56 @@ msgstr "Hely neve" msgid "Location Path" msgstr "Hely elérési út" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "Készlet tétel ID" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "Státuszkód" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "Beszállítói cikkszám" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "Beszállító ID" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "Beszállító neve" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "Vevő ID" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Beépítve ebbe" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "Gyártás ID" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "Vevői rendelés ID" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "Vevői rendelés azonosító" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "Felülvizsgálat szükséges" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "Törlés ha kimerül" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8238,56 +8509,56 @@ msgstr "Lejárati dátum" msgid "External Location" msgstr "Külső hely" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "Alkatrész fa" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "Lejárat előtt" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "Lejárat után" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Állott" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "Mennyiség megadása kötelező" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "Egy érvényes alkatrészt meg kell adni" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "A megadott beszállítói alkatrész nem létezik" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "A beszállítói alkatrészhez van megadva csomagolási mennyiség, de a use_pack_size flag nincs beállítva" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Sorozatszámot nem lehet megadni nem követésre kötelezett alkatrész esetén" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "Készlethely típus" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "Készlethely típusok" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "Alapértelmezett ikon azokhoz a helyekhez, melyeknek nincs ikonja beállítva (válaszható)" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8299,12 +8570,12 @@ msgstr "Készlet hely" msgid "Stock Locations" msgstr "Készlethelyek" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Tulajdonos" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "Tulajdonos kiválasztása" @@ -8334,225 +8605,225 @@ msgstr "Tárolóhely típus" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "Nem lehet ezt a raktári helyet szerkezetivé tenni, mert már vannak itt tételek!" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "A szerkezeti raktári helyre nem lehet készletet felvenni!" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "Virtuális alkatrészből nem lehet készletet létrehozni" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "A beszállítói alkatrész típusa ('{self.supplier_part.part}') mindenképpen {self.part} kellene, hogy legyen" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "Mennyiség 1 kell legyen a sorozatszámmal rendelkező tételnél" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Nem lehet sorozatszámot megadni ha a mennyiség több mint egy" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "A tétel nem tartozhat saját magához" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "A tételnek kell legyen gyártási azonosítója ha az is_bulding igaz" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "Gyártási azonosító nem ugyanarra az alkatrész objektumra mutat" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "Szülő készlet tétel" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "Kiindulási alkatrész" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "Válassz egy egyező beszállítói alkatrészt ehhez a készlet tételhez" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "Hol található ez az alkatrész?" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "A csomagolása ennek a készlet tételnek itt van tárolva" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "Ez a tétel be van építve egy másik tételbe?" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "Sorozatszám ehhez a tételhez" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "Batch kód ehhez a készlet tételhez" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "Készlet mennyiség" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "Forrás gyártás" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "Gyártás ehhez a készlet tételhez" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "Felhasználva ebben" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "Felhasználva ebben a gyártásban" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "Forrás beszerzési rendelés" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "Beszerzés ehhez a készlet tételhez" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "Cél vevői rendelés" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Készlet tétel lejárati dátuma. A készlet lejártnak tekinthető ezután a dátum után" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "Törlés ha kimerül" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "Készlet tétel törlése ha kimerül" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "Egy egység beszerzési ára a beszerzés időpontjában" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "Alkatrésszé alakítva" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "Az alkatrész nem követésre kötelezett" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "Mennyiség egész szám kell legyen" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "A mennyiség nem haladhatja meg az elérhető készletet ({self.quantity})" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "A sorozatszám egész számok listája kell legyen" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "A mennyiség nem egyezik a megadott sorozatszámok számával" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "A sorozatszámok már léteznek" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "Készlet tétel beépül egy másikba" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "A készlet tétel más tételeket tartalmaz" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "Készlet tétel hozzárendelve egy vevőhöz" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "Készlet tétel gyártás alatt" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "Követésre kötelezett készlet nem vonható össze" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "Duplikált készlet tételek vannak" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "A készlet tétel ugyanarra az alkatrészre kell vonatkozzon" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "A készlet tétel ugyanarra a beszállítói alkatrészre kell vonatkozzon" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "Készlet tételek állapotainak egyeznie kell" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "Készlet tétel nem mozgatható mivel nincs készleten" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "Bejegyzés megjegyzései" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "Ehhez a teszthez meg kell adni értéket" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "Ehhez a teszthez fel kell tölteni mellékletet" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "Teszt neve" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "Teszt eredménye" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "Teszt kimeneti értéke" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "Teszt eredmény melléklet" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "Tesztek megjegyzései" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "Szériaszám túl nagy" @@ -8560,157 +8831,161 @@ msgstr "Szériaszám túl nagy" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "Csomagolási mennyiség használata: a megadott mennyiség ennyi csomag" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "Készlet tétel beszerzési ára, per darab vagy csomag" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "Add meg hány készlet tételt lássunk el sorozatszámmal" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "A mennyiség nem lépheti túl a rendelkezésre álló készletet ({q})" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "Írd be a sorozatszámokat az új tételekhez" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "Cél készlet hely" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "Opcionális megjegyzés mező" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "Sorozatszámokat nem lehet hozzárendelni ehhez az alkatrészhez" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "Válaszd ki a beépítésre szánt készlet tételt" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "Beépítendő mennyiség" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "Adja meg a beépítendő mennyiséget" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "Tranzakció megjegyzés hozzáadása (opcionális)" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "A beépítendő mennyiség legalább 1 legyen" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "Készlet tétel nem elérhető" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "A kiválasztott alkatrész nincs az alkatrészjegyzékben" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "A beépítendő mennyiség nem haladhatja meg az elérhető mennyiséget" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "Cél hely a kiszedett tételeknek" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "Válassz alkatrészt amire konvertáljuk a készletet" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "A kiválasztott alkatrész nem megfelelő a konverzióhoz" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "Készlet tétel hozzárendelt beszállítói alkatrésszel nem konvertálható" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "Cél hely a visszatérő tételeknek" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "Válaszd ki a státuszváltásra szánt készlet tételeket" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "Nincs készlet tétel kiválasztva" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "Az alkatrésznek értékesíthetőnek kell lennie" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "A tétel egy vevő rendeléshez foglalt" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "A tétel egy gyártási utasításhoz foglalt" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "Vevő akihez rendeljük a készlet tételeket" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "A kiválasztott cég nem egy vevő" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "Készlet hozzárendelés megjegyzései" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "A készlet tételek listáját meg kell adni" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "Készlet összevonás megjegyzései" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "Nem egyező beszállítók megengedése" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "Különböző beszállítói alkatrészekből származó készletek összevonásának engedélyezése" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "Nem egyező állapotok megjelenítése" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "Különböző állapotú készletek összevonásának engedélyezése" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "Legalább két készlet tételt meg kell adni" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "Nincs változás" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "Készlet tétel elsődleges kulcs értéke" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "Készlet tétel státusz kódja" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "Készlet tranzakció megjegyzései" @@ -8847,7 +9122,7 @@ msgid "Delete stock item" msgstr "Készlet tétel törlése" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Gyártás" @@ -8913,7 +9188,7 @@ msgid "Available Quantity" msgstr "Elérhető mennyiség" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "Nincs beállítva hely" @@ -9391,7 +9666,7 @@ msgstr "Plugin Telepítése" #: templates/InvenTree/settings/plugin.html:45 #: templates/js/translated/plugin.js:224 msgid "Reload Plugins" -msgstr "" +msgstr "Pluginok újratöltése" #: templates/InvenTree/settings/plugin.html:55 msgid "External plugins are not enabled for this InvenTree installation" @@ -9414,11 +9689,6 @@ msgstr "Üzenet" msgid "Plugin information" msgstr "Plugin információ" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "Verzió" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "nincs megadva verzió információ" @@ -9563,12 +9833,12 @@ msgstr "Felhasználói beállítások szerkesztése" #: templates/InvenTree/settings/settings_staff_js.html:49 msgid "Rate" -msgstr "Arány" +msgstr "Árfolyam" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Törlés" @@ -9589,7 +9859,7 @@ msgid "No project codes found" msgstr "Nem találhatók projektszámok" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "csoport" @@ -10045,7 +10315,7 @@ msgstr "Még nem vagy regisztrálva?" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "Regisztráció" @@ -10125,7 +10395,7 @@ msgstr "A regisztráció jelenleg zárva." #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "Vissza a bejelentkezéshez" @@ -10254,7 +10524,7 @@ msgid "The following parts are low on required stock" msgstr "A következő alkatrészek szükséges készlete alacsony" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "Szükséges mennyiség" @@ -10342,7 +10612,7 @@ msgstr "Nem kezelt hibakód" #: templates/js/translated/api.js:266 msgid "Error code" -msgstr "Hiba kód" +msgstr "Hibakód" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" @@ -10623,7 +10893,7 @@ msgstr "Alkatrészjegyzék betöltése az al-gyártmányhoz" msgid "Substitutes Available" msgstr "Vannak helyettesítők" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "Készletváltozatok engedélyezve" @@ -10643,26 +10913,26 @@ msgstr "Alkatrészjegyzék árazása nem teljes" msgid "No pricing available" msgstr "Nincsenek árak" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "Nincs szabad" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "Változatokkal és helyettesítőkkel együtt" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "Változatokkal együtt" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "Helyettesítőkkel együtt" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "Fogyóeszköz tétel" @@ -10694,7 +10964,7 @@ msgstr "Alkatrészjegyzék megtekintése" msgid "No BOM items found" msgstr "Nem találhatók alkatrészjegyzék tételek" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "Szükséges alkatrész" @@ -10706,364 +10976,364 @@ msgstr "Örökölve a szülő alkatrészjegyzéktől" msgid "Edit Build Order" msgstr "Gyártási utasítás szerkesztése" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "Gyártási utasítás létrehozása" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "Gyártási utasítás törlése" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "Biztosan meg szeretnéd szakítani ezt a gyártást?" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "Ehhez a gyártáshoz készlet lett hozzárendelve" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "Ennek a gyártásnak befejezetlen kimenetei vannak" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "Gyártási utasítás készen áll a befejezésre" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "A rendelés nem jelölhető késznek mivel függő kimenetek vannak" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "Gyártási utasítás befejezetlen" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "Gyártási utasítás befejezése" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "Következő szabad sorozatszám" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "Legutolsó sorozatszám" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "Az alkatrészjegyzék követésre kötelezett alkatrészeket tartalmaz" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "A gyártási kimeneteket egyesével kell előállítani" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "A követésre kötelezett alkatrészekhez sorozatszámot lehet rendelni" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "Adj meg sorozatszámokat a több egyedi gyártási kimenet létrehozásához" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "Gyártási kimenet létrehozása" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "Készlet tételek foglalása ehhez a gyártási kimenethez" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "Készlet felszabadítása a gyártási kimenetből" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "Gyártási kimenet befejezése" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "Gyártási kimenet selejtezése" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "Gyártási kimenet törlése" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "Biztosan szeretnéd a már lefoglalt készlet tételeket felszabadítani ebből a gyártási utasításból?" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "Készlet tételek felszabadítása" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "Gyártási kimenetek kiválasztása" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "Legalább egy gyártási kimenetet ki kell választani" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "A kiválasztott gyártási kimenetek késznek lesznek jelölve" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "Kimenet" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "Gyártási kimenetek befejezése" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "A kiválasztott gyártási kimenetek selejtnek lesznek jelölve" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "Selejtezett kimenetek elutasítottnak jelölve" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "A lefoglalt készlet már nem lesz elérhető" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "A befejezési státusza a gyártásnak nem fog változni" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "Gyártási kimenetek selejtezése" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "A kiválasztott gyártási kimenetek törölve lesznek" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "A gyártási kimenet adatai véglegesen törölve lesznek" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "A lefoglalt készlet tételek újra készletre kerülnek" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "Gyártási kimenetek törlése" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "Nincs gyártási utasításhoz történő foglalás" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "Lefoglalt mennyiség" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "Hely nincs megadva" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" -msgstr "Befejezett kimenetek" +msgstr "Kimenetek befejezése" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "Kimenetek selejtezése" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "Kimenetek törlése" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "gyártás kimenet" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "gyártás kimenetek" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "Gyártási kimenet műveletei" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "Nem található aktív gyártási kimenet" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "Lefoglalt sorok" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "Szükséges tesztek" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "Kiválasztott alkatrészek" +msgstr "Válassz alkatrészeket" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "Legalább egy alkatrész választása szükséges a foglaláshoz" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "Készlet foglalási mennyiség megadása" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "Minden alkatrész lefoglalva" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "Minden kiválasztott alkatrész teljesen lefoglalva" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "Válassz forrás helyet (vagy hagyd üresen ha bárhonnan)" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "Készlet foglalása a gyártási utasításhoz" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "Nincs egyező készlethely" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "Nincs egyező készlet" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "Automatikus készlet foglalás" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "A készlet automatikusan lefoglalásra kerül ehhez a gyártási utasításhoz, a következő feltételek szerint" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "Ha egy készlet hely meg van adva, akkor készlet csak arról a helyről lesz foglalva" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "Ha a készlet helyettesíthetőnek minősül, akkor az első rendelkezésre álló helyről lesz lefoglalva" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "Ha a helyettesítő készlet engedélyezve van, akkor ott az lesz használva ha az elsődleges alkatrésznek nincs készlete" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "Készlet tételek foglalása" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "Nincs a lekérdezéssel egyező gyártási utasítás" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "Kiválaszt" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "Gyártás késésben van" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "Haladás" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "Nincs felhasználói információ" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "Készlet foglalások szerkesztése" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "Készlet foglalások törlése" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "Foglalás szerkesztése" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "Foglalás törlése" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "gyártás sor" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "gyártás sorok" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "Nincsenek gyártási sorok" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "Követésre kötelezett alkatrész" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "Mennyiségi egység" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "Van elegendő" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "Fogyóeszköz tétel" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "Követett tétel" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "Gyártási készlet" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "Készlet rendelés" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "Lefoglalt készlet" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "Készlet foglalások törlése" @@ -11320,7 +11590,7 @@ msgstr "hamis" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "Szűrők kiválasztása" +msgstr "Szűrő kiválasztása" #: templates/js/translated/filters.js:437 msgid "Print Labels" @@ -11386,7 +11656,7 @@ msgstr "Form hibák vannak" #: templates/js/translated/forms.js:1967 msgid "No results found" -msgstr "Nincs eredmény" +msgstr "Nincs találat" #: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239 msgid "Searching" @@ -11428,10 +11698,6 @@ msgstr "Hamis" msgid "No parts required for builds" msgstr "Nem szükséges alkatrész a gyártáshoz" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "Lefoglalt készlet" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "Tételek kiválasztása" @@ -11567,7 +11833,7 @@ msgstr "Megjelölés olvasottként" #: templates/js/translated/notification.js:254 msgid "No unread notifications" -msgstr "Nincs olvasatlan értesítés" +msgstr "Nincsenek olvasatlan értesítések" #: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" @@ -11761,7 +12027,7 @@ msgstr "Alacsony készlet" #: templates/js/translated/part.js:688 msgid "No stock available" -msgstr "Nincs szabad" +msgstr "Nincs elérhető készlet" #: templates/js/translated/part.js:748 msgid "Demand" @@ -11872,6 +12138,10 @@ msgstr "Alkatrész kategória beállítása" msgid "Set category" msgstr "Kategória beállítása" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "alkatrész" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "alkatrészek" @@ -11956,7 +12226,7 @@ msgstr "Ütemezett készlet mennyiség" #: templates/js/translated/part.js:3196 msgid "Maximum Quantity" -msgstr "Minimum mennyiség" +msgstr "Maximum mennyiség" #: templates/js/translated/part.js:3241 msgid "Minimum Stock Level" @@ -12004,7 +12274,7 @@ msgstr "Bekapcsolás" #: templates/js/translated/plugin.js:189 msgid "Disable" -msgstr "Kikapcsolás" +msgstr "Letiltás" #: templates/js/translated/plugin.js:203 msgid "Plugin updated" @@ -12099,7 +12369,7 @@ msgstr "Ez a rendelés olyan sortételeket tartalmaz amik még nem érkeztek be. #: templates/js/translated/purchase_order.js:479 #: templates/js/translated/sales_order.js:514 msgid "Completing this order means that the order and line items will no longer be editable." -msgstr "A rendelés befejezésével jelölésével annak adatai és sortételei a továbbiakban már nem lesznek szerkeszthetők." +msgstr "A rendelés befejezettnek jelölésével annak adatai és sortételei a továbbiakban már nem lesznek szerkeszthetők." #: templates/js/translated/purchase_order.js:502 msgid "Cancel Purchase Order" @@ -12344,7 +12614,7 @@ msgid "Receive Return Order Items" msgstr "Visszavétel tételeinek bevételezése" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "Nincs egyező sortétel" @@ -12509,7 +12779,7 @@ msgid "Purchase stock" msgstr "Készletrendelés" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "Árszámítás" @@ -12525,7 +12795,7 @@ msgstr "Nem törölhető mivel tételek vannak lefoglalva" msgid "Allocate Serial Numbers" msgstr "Sorozatszámok kiosztása" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "Egységár módosítása" @@ -12723,7 +12993,7 @@ msgstr "Leltározás" #: templates/js/translated/stock.js:1032 msgid "Count" -msgstr "Mennyiség" +msgstr "Leltár" #: templates/js/translated/stock.js:1036 msgid "Remove Stock" @@ -12737,7 +13007,7 @@ msgstr "Kivesz" msgid "Add Stock" msgstr "Készlet növelése" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "Hozzáad" @@ -13166,10 +13436,6 @@ msgstr "Kimerült készlet tételek megjelenítése" msgid "Show items which are in stock" msgstr "Készleten lévő tételek megjelenítése" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "Gyártásban" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "Gyártásban lévő tételek megjelenítése" @@ -13464,11 +13730,16 @@ msgstr "Érvénytelen SSO szolgáltató" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "A kiválasztott SSO kiszolgáló érvénytelen, vagy nincs megfelelően konfigurálva" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" -msgstr "A %(provider_name)s felhasználói fiókodat fogod használni a %(site_name)s belépéshez.
Kérlek töltsd ki az alábbi adatokat:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" +msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 msgid "Provider has not been configured" @@ -13546,27 +13817,27 @@ msgstr "Igen" msgid "No" msgstr "Nem" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "Felhasználók" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "Válaszd ki mely felhasználók tartoznak ehhez a csoporthoz" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "Az alábbi felhasználók több csoportnak is tagjai" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "Személyes adatok" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "Jogosultságok" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "Fontos dátumok" @@ -13610,35 +13881,35 @@ msgstr "Token utolsó használata" msgid "Revoked" msgstr "Visszavonva" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "Jogosultságok" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "Csoport" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "Nézet" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "Jogosultság tételek megtekintéséhez" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "Jogosultság tételek hozzáadásához" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "Módosítás" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Jogosultság tételek szerkesztéséhez" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "Jogosultság tételek törléséhez" diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po index 2196796527..b07735719a 100644 --- a/InvenTree/locale/id/LC_MESSAGES/django.po +++ b/InvenTree/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API endpoint tidak ditemukan" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Pengguna tidak memiliki izin untuk melihat model ini" @@ -43,7 +43,7 @@ msgstr "" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Detail terkait galat dapat dilihat di panel admin" @@ -51,18 +51,18 @@ msgstr "Detail terkait galat dapat dilihat di panel admin" msgid "Enter date" msgstr "Masukkan tanggal" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Alamat surel utama yang diberikan tidak valid." msgid "The provided email domain is not approved." msgstr "Domain surel yang diberikan tidak perbolehkan." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Jumlah yang diberikan tidak valid" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Nomor seri kosong" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Tidak ada nomor seri ditemukan" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Hapus tag-tag HTML dari nilai ini" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Ukuran gambar terlalu besar" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "URL yang diberikan bukan file gambar yang valid" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Ceko" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Denmark" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Jerman" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Yunani" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Inggris" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Spanyol" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Spanyol (Meksiko)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Farsi / Persia" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Perancis" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Ibrani" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Hungaria" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Itali" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Jepang" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Korea" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Belanda" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norwegia" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Polandia" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugis" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugis (Brasil)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Rusia" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Swedia" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Thai" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Turki" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnam" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "Surel" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "File tidak ditemukan" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Tautan eksternal tidak ditemukan" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Lampiran" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Pilih file untuk dilampirkan" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Pilih file untuk dilampirkan" msgid "Link" msgstr "Tautan" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Tautan menuju URL eksternal" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Komentar" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Komentar file" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Pengguna" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "tanggal diunggah" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Nama file tidak boleh kosong" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Direktori lampiran tidak valid" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Nama file mengandung karakter yang tidak diperkenankan '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Nama file tidak memiliki ekstensi" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Lampiran dengan nama file ini sudah ada" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Kesalahan merubah nama file" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Pilihan tidak valid" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Pilihan tidak valid" msgid "Name" msgstr "Nama" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "Nama" msgid "Description" msgstr "Keterangan" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Keterangan (opsional)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "induk" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Direktori" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Data Barcode" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Data barcode pihak ketiga" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Barcode Hash" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Hash unik data barcode" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Sudah ada barcode yang sama" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Terjadi Kesalahan Server" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Sebuah kesalahan telah dicatat oleh server." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Harus berupa angka yang valid" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Mata Uang" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Nama File" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Nilai tidak valid" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "File data" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Pilih file untuk diunggah" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Jenis file tidak didukung" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Ukuran file terlalu besar" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Tidak ditemukan kolom dalam file" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Tidak ditemukan barisan data dalam file" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Tidak ada barisan data tersedia" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Tidak ada kolom data tersedia" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Kolom yang diperlukan kurang: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Kolom duplikat: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "URL file gambar external" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Unduhan gambar dari URL external tidak aktif" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Ceko" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Denmark" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Jerman" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Yunani" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Inggris" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Spanyol" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Spanyol (Meksiko)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Farsi / Persia" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Perancis" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Ibrani" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Hungaria" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Itali" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Jepang" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Korea" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Belanda" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norwegia" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Polandia" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugis" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugis (Brasil)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Rusia" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Swedia" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Thai" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Turki" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnam" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "" @@ -712,7 +722,7 @@ msgstr "Dikembalikan" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "Tentang InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Pesanan harus dibatalkan sebelum dapat dihapus" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Order Produksi" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "Order Produksi" msgid "Build Orders" msgstr "Order Produksi" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Pilihan produksi induk tidak valid" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Referensi Order Produksi" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "Referensi Order Produksi" msgid "Reference" msgstr "Referensi" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Produksi Induk" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Produksi induk dari produksi ini" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "Produksi induk dari produksi ini" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "Produksi induk dari produksi ini" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "Produksi induk dari produksi ini" msgid "Part" msgstr "Bagian" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Pilih bagian untuk diproduksi" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Referensi Order Penjualan" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Order penjualan yang teralokasikan ke pesanan ini" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Lokasi Sumber" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Pilih dari lokasi mana stok akan diambil untuk produksi ini (kosongkan untuk mengambil stok dari mana pun)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Lokasi Tujuan" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Pilih lokasi di mana item selesai akan disimpan" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Jumlah Produksi" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Jumlah item stok yang akan dibuat" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Item selesai" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Jumlah stok item yang telah diselesaikan" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Status pembuatan" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Kode status pembuatan" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Kode Kelompok" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Kode kelompok untuk hasil produksi ini" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Tanggal Pembuatan" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Target tanggal selesai" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Target tanggal selesai produksi. Produksi akan menjadi terlambat setelah tanggal ini." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Tanggal selesai" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "diselesaikan oleh" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Diserahkan oleh" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Pengguna yang menyerahkan order ini" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Penanggung Jawab" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Tautan eksternal" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Tidak ada hasil produksi yang ditentukan" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "Hasil produksi sudah selesai" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "Hasil produksi tidak sesuai dengan order produksi" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "Jumlah harus lebih besar daripada nol" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "Jumlah" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Item produksi harus menentukan hasil produksi karena bagian utama telah ditandai sebagai dapat dilacak" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "Item stok teralokasikan terlalu banyak" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Jumlah yang dialokasikan harus lebih dari nol" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "Jumlah harus 1 untuk stok dengan nomor seri" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "Stok Item" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Sumber stok item" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Jumlah stok yang dialokasikan ke produksi" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Pasang ke" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Tujuan stok item" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "Hasil Produksi" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "Hasil produksi tidak sesuai dengan produksi induk" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "Hasil bagian tidak sesuai dengan bagian dalam order produksi" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "Hasil produksi ini sudah diselesaikan" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "Hasil produksi tidak dialokasikan sepenuhnya" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "Masukkan jumlah hasil pesanan" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "Jumlah bagian yang dapat dilacak harus berupa angka bulat" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Jumlah harus angka bulat karena terdapat bagian yang dapat dilacak dalam daftar barang" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Nomor Seri" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "Masukkan nomor seri untuk hasil pesanan" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "Alokasikan nomor seri secara otomatis" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "Alokasikan item yang diperlukan dengan nomor seri yang sesuai secara otomatis" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "Nomor-nomor seri berikut sudah ada atau tidak valid" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "Daftar hasil pesanan harus disediakan" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "Daftar hasil pesanan harus disediakan" msgid "Location" msgstr "Lokasi" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "Lokasi hasil pesanan yang selesai" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "Lokasi hasil pesanan yang selesai" msgid "Status" msgstr "Status" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "Terima Alokasi Tidak Lengkap" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "Terima Tidak Teralokasikan" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Terima bahwa stok item tidak teralokasikan sepenuhnya ke pesanan ini" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Stok yang diperlukan belum teralokasikan sepenuhnya" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "Terima Tidak Selesai" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "Terima bahwa jumlah hasil produksi yang diperlukan belum selesai" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "Jumlah produksi yang diperlukan masih belum cukup" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Order memiliki hasil produksi yang belum dilengkapi" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "Hasil produksi" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "Hasil pesanan harus mengarah ke pesanan yang sama" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part harus mengarah ke bagian yang sesuai dengan order produksi" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "Item harus tersedia dalam stok" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Jumlah tersedia ({q}) terlampaui" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "Hasil produksi harus ditentukan untuk mengalokasikan bagian yang terlacak" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Hasil produksi tidak dapat ditentukan untuk alokasi barang yang tidak terlacak" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "Item yang dialokasikan harus disediakan" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Lokasi stok, dari mana bahan/bagian akan diambilkan (kosongkan untuk mengambil dari lokasi mana pun)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "Lokasi tidak termasuk" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "Jangan ambil stok item dari lokasi yang dipilih" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "Stok bergantian" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Item stok di beberapa lokasi dapat digunakan secara bergantian" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "Stok pengganti" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "Izinkan alokasi bagian pengganti" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "Item tagihan material" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "Stok dibutuhkan untuk order produksi" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1985,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "Surel diperlukan" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "Item tagihan material" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "Tidak ada tindakan yang ditentukan" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Aksi tidak ditemukan" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "Lampiran perlu diunggah untuk tes ini" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Produksi" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -9853,7 +10124,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "Apakah Anda benar-benar ingin menghapus alamat surel yang dipilih?" +msgstr "" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11144,7 +11415,7 @@ msgstr "" #: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "Alamat Surel" +msgstr "" #: templates/js/translated/company.js:752 msgid "Delete Contact" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11870,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13462,10 +13729,15 @@ msgstr "Penyedia SSO tidak valid" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "Data pribadi" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 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 3148091ca1..dee04da8e9 100644 --- a/InvenTree/locale/it/LC_MESSAGES/django.po +++ b/InvenTree/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:42\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "Endpoint API non trovato" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "L'utente non ha i permessi per vedere questo modello" @@ -43,7 +43,7 @@ msgstr "Quantità fornita non valida" msgid "Invalid quantity supplied ({exc})" msgstr "Quantità fornita non valida ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "I dettagli dell'errore possono essere trovati nel pannello di amministrazione" @@ -51,18 +51,18 @@ msgstr "I dettagli dell'errore possono essere trovati nel pannello di amministra msgid "Enter date" msgstr "Inserisci la data" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "L'indirizzo email principale fornito non è valido." msgid "The provided email domain is not approved." msgstr "L'indirizzo di posta elettronica fornito non è approvato." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "La registrazione è disabilitata." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Quantità inserita non valida" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Numero seriale vuoto" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Seriale Duplicato" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" -msgstr "" +msgstr "Intervallo di gruppo non valido: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" -msgstr "" +msgstr "L'intervallo di gruppo {group} supera la quantità consentita ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" -msgstr "" +msgstr "Sequenza di gruppo non valida: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Nessun numero di serie trovato" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" -msgstr "" +msgstr "Il numero di numeri di serie univoci ({len(serials)}) deve corrispondere alla quantità ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Rimuovi i tag HTML da questo valore" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Errore di connessione" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Il server ha risposto con un codice di stato non valido" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Si è verificata un'eccezione" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Il server ha risposto con valore Content-Length non valido" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Immagine troppo grande" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Il download dell'immagine ha superato la dimensione massima" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Il server remoto ha restituito una risposta vuota" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "L'URL fornito non è un file immagine valido" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Bulgaro" + +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Ceco" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Danese" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Tedesco" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Greco" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Inglese" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Spagnolo" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Spagnolo (Messicano)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Farsi / Persiano" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Finlandese" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Francese" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Ebraico" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Ungherese" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Italiano" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Giapponese" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Coreano" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Olandese" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norvegese" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Polacco" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portoghese" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portoghese (Brasile)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Russo" + +#: InvenTree/locales.py:39 +msgid "Slovak" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Sloveno" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Serbo" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Svedese" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Thailandese" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Turco" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnamita" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Cinese (Semplificato)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Cinese (Tradizionale)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "Email" -#: InvenTree/models.py:83 -msgid "Metadata must be a python dict object" +#: InvenTree/models.py:107 +msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:162 +msgid "Metadata must be a python dict object" +msgstr "I metadati devono essere un oggetto python dict" + +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Metadati Plugin" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "Campo di metadati JSON, da utilizzare con plugin esterni" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Schema formattato impropriamente" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Formato chiave sconosciuta" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Formato chiave mancante" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Il campo di riferimento non può essere vuoto" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Il campo deve corrispondere al modello richiesto" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Numero di riferimento troppo grande" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "File mancante" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Link esterno mancante" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Allegato" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Seleziona file da allegare" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Seleziona file da allegare" msgid "Link" msgstr "Collegamento" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Link a URL esterno" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Commento" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Commento del file" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Utente" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "data caricamento" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Il nome del file non deve essere vuoto" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Directory allegati non valida" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Il nome del file contiene caratteri non validi '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Nome file estensione mancante" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Esiste già un allegato con questo nome di file" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Errore nella rinominazione del file" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "Nomi duplicati non possono esistere sotto lo stesso genitore" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Scelta non valida" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Scelta non valida" msgid "Name" msgstr "Nome" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "Nome" msgid "Description" msgstr "Descrizione" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Descrizione (opzionale)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "genitore" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Percorso" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Note di Markdown (opzionale)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Dati del Codice a Barre" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Dati Codice a Barre applicazioni di terze parti" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Codice a Barre" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Codice univoco del codice a barre" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Trovato codice a barre esistente" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Errore del server" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Un errore è stato loggato dal server." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Deve essere un numero valido" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Selezionare la valuta dalle opzioni disponibili" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." -msgstr "" +msgstr "Non hai i permessi per cambiare il ruolo dell'utente." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" +msgstr "Solo i superutenti possono creare nuovi utenti" + +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Nome del file" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Valore non valido" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "File dati" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Seleziona un file per il caricamento" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Formato file non supportato" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "File troppo grande" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Nessun colonna trovata nel file" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Nessuna riga di dati trovata nel file" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Nessun dato fornito" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Nessuna colonna di dati fornita" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Colonna richiesta mancante: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Colonna duplicata: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" -msgstr "" +msgstr "Immagine Remota" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "URL del file immagine remota" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Il download delle immagini da URL remoto non è abilitato" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Ceco" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Danese" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Tedesco" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Greco" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Inglese" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Spagnolo" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Spagnolo (Messicano)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Farsi / Persiano" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Francese" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Ebraico" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Ungherese" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Italiano" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Giapponese" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Coreano" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Olandese" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norvegese" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Polacco" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portoghese" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portoghese (Brasile)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Russo" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Sloveno" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Svedese" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Thailandese" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Turco" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnamita" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Controllo in background non riuscito" @@ -712,7 +722,7 @@ msgstr "Reso" msgid "In Progress" msgstr "In corso" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -777,7 +787,7 @@ msgstr "Posizione cambiata" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "" +msgstr "Stock aggiornato" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" @@ -821,7 +831,7 @@ msgstr "Build order output completato" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "" +msgstr "Ordine di costruzione rifiutato" #: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" @@ -875,13 +885,9 @@ msgstr "Rifiuta" msgid "Unknown database" msgstr "Database sconosciuto" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" -msgstr "" +msgstr "Unità fisica non valida" #: InvenTree/validators.py:39 msgid "Not a valid currency code" @@ -927,16 +933,16 @@ msgstr "Informazioni Su InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "La produzione deve essere annullata prima di poter essere eliminata" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "Consumabile" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "Opzionale" msgid "Tracked" msgstr "Monitorato" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "Allocato" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "Allocato" msgid "Available" msgstr "Disponibile" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Ordine di Produzione" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "Ordine di Produzione" msgid "Build Orders" msgstr "Ordini di Produzione" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Scelta non valida per la produzione genitore" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" -msgstr "" +msgstr "L'ordine di costruzione della parte non può essere cambiata" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Riferimento Ordine Di Produzione" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "Riferimento Ordine Di Produzione" msgid "Reference" msgstr "Riferimento" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "Breve descrizione della build (facoltativo)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Produzione Genitore" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Ordine di produzione a cui questa produzione viene assegnata" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata" msgid "Part" msgstr "Articolo" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Selezionare parte da produrre" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Numero di riferimento ordine di vendita" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Ordine di vendita a cui questa produzione viene assegnata" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Posizione Di Origine" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Seleziona la posizione da cui prelevare la giacenza (lasciare vuoto per prelevare da qualsiasi posizione di magazzino)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Posizione Della Destinazione" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Seleziona il luogo in cui gli articoli completati saranno immagazzinati" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Quantità Produzione" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Numero di articoli da costruire" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Articoli completati" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Numero di articoli di magazzino che sono stati completati" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Stato Produzione" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Codice stato di produzione" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Codice Lotto" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Codice del lotto per questa produzione" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Data di creazione" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Data completamento obiettivo" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Data di completamento della produzione. Dopo tale data la produzione sarà in ritardo." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Data di completamento" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "Completato da" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Rilasciato da" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Utente che ha emesso questo ordine di costruzione" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Responsabile" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "Utente o gruppo responsabile di questo ordine di produzione" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Collegamento esterno" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "Priorità di produzione" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "Priorità di questo ordine di produzione" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "Priorità di questo ordine di produzione" msgid "Project Code" msgstr "Codice del progetto" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" -msgstr "" +msgstr "Codice del progetto per questo ordine di produzione" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "L'ordine di produzione {build} è stato completato" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "L'ordine di produzione è stato completato" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Nessun output di produzione specificato" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "La produzione è stata completata" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "L'output della produzione non corrisponde all'ordine di compilazione" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "La quantità deve essere maggiore di zero" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" -msgstr "" +msgstr "La quantità non può essere maggiore della quantità in uscita" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" -msgstr "" +msgstr "Crea oggetto" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "Quantità" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" -msgstr "" +msgstr "Quantità richiesta per l'ordine di costruzione" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "L'elemento di compilazione deve specificare un output poiché la parte principale è contrassegnata come rintracciabile" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "La quantità assegnata ({q}) non deve essere maggiore della quantità disponibile ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "L'articolo in giacenza è sovrallocato" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "La quantità di assegnazione deve essere maggiore di zero" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "La quantità deve essere 1 per lo stock serializzato" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" -msgstr "" +msgstr "L'articolo in stock selezionato non corrisponde alla voce nella BOM" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "Articoli in magazzino" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Origine giacenza articolo" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Quantità di magazzino da assegnare per la produzione" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Installa in" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Destinazione articolo in giacenza" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "Genera Output" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "L'output generato non corrisponde alla produzione principale" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "L'output non corrisponde alle parti dell'ordine di produzione" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "Questa produzione è stata già completata" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "Questo output non è stato completamente assegnato" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "Inserisci la quantità per l'output di compilazione" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "Quantità totale richiesta per articoli rintracciabili" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Quantità totale richiesta, poiché la fattura dei materiali contiene articoli rintracciabili" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Codice Seriale" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "Inserisci i numeri di serie per gli output di compilazione (build option)" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "Numeri di Serie Assegnazione automatica" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "Assegna automaticamente gli articoli richiesti con i numeri di serie corrispondenti" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "I seguenti numeri di serie sono già esistenti o non sono validi" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "Deve essere fornito un elenco dei risultati di produzione" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "Deve essere fornito un elenco dei risultati di produzione" msgid "Location" msgstr "Posizione" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "Posizione per gli output di build completati" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "Posizione per gli output di build completati" msgid "Status" msgstr "Stato" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "Accetta Assegnazione Incompleta" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "Completa l'output se le scorte non sono state interamente assegnate" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "Rimuovi Giacenze Allocate" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "Detrai qualsiasi scorta che è stata già assegnata a questa produzione" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "Rimuovi Output Incompleti" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "Elimina gli output di produzione che non sono stati completati" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" -msgstr "" +msgstr "Non permesso" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "Accetta come consumato da questo ordine di produzione" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "Non assegnare prima di aver completato questo ordine di produzione" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "Giacenza in eccesso assegnata" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Come si desidera gestire gli elementi extra giacenza assegnati all'ordine di produzione" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "Alcuni articoli di magazzino sono stati assegnati in eccedenza" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "Accetta Non Assegnato" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Accetta che gli elementi in giacenza non sono stati completamente assegnati a questo ordine di produzione" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "La giacenza richiesta non è stata completamente assegnata" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "Accetta Incompleta" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "Accetta che il numero richiesto di output di produzione non sia stato completato" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "La quantità di produzione richiesta non è stata completata" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "L'ordine di produzione ha output incompleti" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" -msgstr "" +msgstr "Linea di produzione" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "Genera Output" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "L'output di produzione deve puntare alla stessa produzione" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" -msgstr "" +msgstr "Articolo linea di produzione" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "gli elementi degli articoli della distinta base devono puntare alla stessa parte dell'ordine di produzione" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "L'articolo deve essere disponibile" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantità disponibile ({q}) superata" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "L'output di produzione deve essere specificato per l'ubicazione delle parti tracciate" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "L'output di produzione non deve essere specificato per l'ubicazione delle parti non tracciate" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "Deve essere indicata l'allocazione dell'articolo" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Posizione dello stock in cui le parti devono prelevate (lasciare vuoto per prelevare da qualsiasi luogo)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "Escludi Ubicazione" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "Escludi gli elementi stock da questa ubicazione selezionata" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "Scorte Intercambiabili" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Gli elementi in magazzino in più sedi possono essere utilizzati in modo intercambiabile" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "Sostituisci Giacenze" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "Consenti l'allocazione delle parti sostitutive" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "Articoli Opzionali" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "Assegna gli elementi opzionali della distinta base all'ordine di produzione" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "Distinta base (Bom)" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "Ordinato" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "Disponibilità in magazzino" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "Giacenza richiesta per l'ordine di produzione" @@ -1658,7 +1693,7 @@ msgstr "L'ordine di produzione {bo} è in ritardo" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" -msgstr "" +msgstr "Anteprima parte" #: build/templates/build/build_base.html:38 #: company/templates/company/supplier_part.html:35 @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Lo stock non è stato completamente assegnato a questo ordine di produzione" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "Outputs Completati" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,21 +1864,21 @@ msgid "Issued By" msgstr "Inviato da" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "Priorità" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "Elimina Ordine Build" +msgstr "Elimina ordine di produzione" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "Genera Codice QR Ordine" +msgstr "Genera Codice QR Ordine di produzione" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "Collega il codice a barre all'ordine di build" +msgstr "Collega il codice a barre all'ordine di produzione" #: build/templates/build/detail.html:15 msgid "Build Details" @@ -1857,7 +1892,7 @@ msgstr "Risorse di magazzino" msgid "Stock can be taken from any available location." msgstr "Lo stock può essere prelevato da qualsiasi posizione disponibile." -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "Destinazione" @@ -1870,9 +1905,9 @@ msgstr "Posizione di destinazione non specificata" msgid "Allocated Parts" msgstr "Articoli Assegnati" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "Lotto" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "Creato" @@ -1985,11 +2020,11 @@ msgstr "Allegati" msgid "Build Notes" msgstr "Genera Note" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" -msgstr "Assegnazione Completa" +msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "{name.title()} File" msgid "Select {name} file to upload" msgstr "Seleziona il file {name} da caricare" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "Aggiornato" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Orario dell'ultimo aggiornamento" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "Codice unico del progetto" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "Descrizione del progetto" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole)" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "Valore impostazioni" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "Il valore specificato non è un opzione valida" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "Il valore deve essere un valore booleano" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "Il valore deve essere un intero" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "La stringa chiave deve essere univoca" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "Nessun gruppo" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "Un dominio vuoto non è consentito." -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Nome dominio non valido: {domain}" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "Riavvio richiesto" -#: common/models.py:1178 +#: common/models.py:1217 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:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "Nome Istanza Del Server" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "Descrittore stringa per l'istanza del server" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "Utilizza nome istanza" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "Usa il nome dell'istanza nella barra del titolo" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "Limita visualizzazione `Informazioni`" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "Mostra la modalità `Informazioni` solo ai superusers" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Nome azienda" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "Nome interno dell'azienda" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "URL Base" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "URL di base per l'istanza del server" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Valuta predefinita" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "giorni" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "Scarica dall'URL" -#: common/models.py:1245 +#: common/models.py:1284 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:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "Limite Dimensione Download" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "Dimensione massima consentita per il download dell'immagine remota" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "User-agent utilizzato per scaricare dall'URL" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "Consenti di sovrascrivere l'user-agent utilizzato per scaricare immagini e file da URL esterno (lasciare vuoto per il predefinito)" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "Richiesta conferma" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "Richiede una conferma esplicita dell'utente per una determinata azione." -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "Profondità livelli" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "Profondità predefinita per la visualizzazione ad albero. I livelli più in alto possono essere caricati più lentamente quando necessari." -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "Aggiorna intervallo di controllo" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "Quanto spesso controllare gli aggiornamenti (impostare a zero per disabilitare)" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "Backup automatico" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "Abilita il backup automatico di database e file multimediali" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "Intervallo Di Backup Automatico" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "Definisci i giorni intercorrenti tra un backup automatico e l'altro" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "I risultati delle attività in background verranno eliminati dopo un determinato numero di giorni" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "I log di errore verranno eliminati dopo il numero specificato di giorni" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "Le notifiche dell'utente verranno eliminate dopo il numero di giorni specificato" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Supporto Codice A Barre" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "Codice a barre inserito scaduto" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "Tempo di ritardo di elaborazione codice a barre" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "Codice a Barre Supporto Webcam" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "Consenti la scansione del codice a barre tramite webcam nel browser" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "Abilita il campo revisione per l'articolo" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "Schema di espressione regolare per l'articolo corrispondente IPN" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "Consenti duplicati IPN" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "Permetti a più articoli di condividere lo stesso IPN" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "Permetti modifiche al part number interno (IPN)" -#: common/models.py:1368 +#: common/models.py:1407 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:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "Copia I Dati Della distinta base dell'articolo" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "Copia i dati della Distinta Base predefinita quando duplichi un articolo" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "Copia I Dati Parametro dell'articolo" -#: common/models.py:1380 +#: common/models.py:1419 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:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "Copia I Dati dell'Articolo Test" -#: common/models.py:1386 +#: common/models.py:1425 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:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "Copia Template Parametri Categoria" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "Copia i modelli dei parametri categoria quando si crea un articolo" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Modello" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "Gli articoli sono modelli per impostazione predefinita" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Assemblaggio" -#: common/models.py:1404 +#: common/models.py:1443 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:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Componente" -#: common/models.py:1410 +#: common/models.py:1449 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:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Acquistabile" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Vendibile" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Tracciabile" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "Gli articoli sono tracciabili per impostazione predefinita" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtuale" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "Gli articoli sono virtuali per impostazione predefinita" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "Mostra l'importazione nelle viste" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "Mostra la procedura guidata di importazione in alcune viste articoli" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "Mostra articoli correlati" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "Visualizza parti correlate per ogni articolo" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "Dati iniziali dello stock" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "Consentire la creazione di uno stock iniziale quando si aggiunge una nuova parte" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Dati iniziali del fornitore" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Consentire la creazione dei dati iniziali del fornitore quando si aggiunge una nuova parte" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "Formato di visualizzazione del nome articolo" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "Formato per visualizzare il nome dell'articolo" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "Icona predefinita Categoria Articolo" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "Icona predefinita Categoria Articolo (vuoto significa nessuna icona)" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "Usa Prezzi Fornitore" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Includere le discontinuità di prezzo del fornitore nei calcoli generali dei prezzi" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "Ignora la Cronologia Acquisti" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Cronologia dei prezzi dell'ordine di acquisto del fornitore superati con discontinuità di prezzo" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "Utilizzare i prezzi degli articoli in stock" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Utilizzare i prezzi dei dati di magazzino inseriti manualmente per il calcolo dei prezzi" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "Età dei prezzi degli articoli in stock" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Escludere dal calcolo dei prezzi gli articoli in giacenza più vecchi di questo numero di giorni" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "Utilizza Variazione di Prezzo" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "Includi la variante dei prezzi nei calcoli dei prezzi complessivi" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "Solo Varianti Attive" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "Utilizza solo articoli di varianti attive per calcolare i prezzi delle varianti" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "Numero di giorni prima che il prezzo dell'articolo venga aggiornato automaticamente" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "Prezzi interni" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "Abilita prezzi interni per gli articoli" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "Sovrascrivi Prezzo Interno" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "Se disponibile, i prezzi interni sostituiscono i calcoli della fascia di prezzo" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "Abilita stampa etichette" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "Abilita la stampa di etichette dall'interfaccia web" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "Etichetta Immagine DPI" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "Risoluzione DPI quando si generano file di immagine da fornire ai plugin di stampa per etichette" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "Abilita Report di Stampa" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "Abilita generazione di report di stampa" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "Modalità Debug" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "Genera report in modalità debug (output HTML)" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Dimensioni pagina" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "Dimensione predefinita della pagina per i report PDF" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "Abilita Rapporto di Prova" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "Abilita generazione di stampe di prova" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "Allega Rapporto di Prova" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Quando si stampa un rapporto di prova, allegare una copia del rapporto di prova all'elemento di magazzino associato" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "Seriali Unici Globali" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "I numeri di serie per gli articoli di magazzino devono essere univoci" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "Auto Riempimento Numeri Seriali" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "Auto riempimento numeri nel modulo" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "Elimina scorte esaurite" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "Determina il comportamento predefinito quando un elemento stock è esaurito" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "Modello Codice a Barre" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "Modello per la generazione di codici batch predefiniti per gli elementi stock" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "Scadenza giacenza" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "Abilita funzionalità di scadenza della giacenza" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "Vendi giacenza scaduta" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "Consenti la vendita di stock scaduti" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "Tempo di Scorta del Magazzino" -#: common/models.py:1658 +#: common/models.py:1697 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:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "Crea giacenza scaduta" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "Permetti produzione con stock scaduto" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "Controllo della proprietà della giacenza" -#: common/models.py:1672 +#: common/models.py:1711 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:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "Icona Predefinita Ubicazione di Magazzino" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "Icona Predefinita Ubicazione di Magazzino (vuoto significa nessuna icona)" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "Modello Di Riferimento Ordine Di Produzione" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "Modello richiesto per generare il campo di riferimento ordine di produzione" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "Modello Di Riferimento Ordine Di Vendita" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "Modello richiesto per generare il campo di riferimento ordine di vendita" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "Spedizione Predefinita Ordine Di Vendita" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "Abilita la creazione di spedizioni predefinite con ordini di vendita" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "Modifica Ordini Di Vendita Completati" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Consenti la modifica degli ordini di vendita dopo che sono stati spediti o completati" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "Modello di Riferimento Ordine D'Acquisto" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "Modello richiesto per generare il campo di riferimento ordine di acquisto" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "Modifica Ordini Di Acquisto Completati" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Consenti la modifica degli ordini di acquisto dopo che sono stati spediti o completati" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "Abilita password dimenticata" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "Abilita la funzione password dimenticata nelle pagine di accesso" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "Abilita registrazione" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "SSO abilitato" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "Abilita SSO nelle pagine di accesso" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "Abilita registrazione SSO" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Abilita l'auto-registrazione tramite SSO per gli utenti nelle pagine di accesso" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "Email richiesta" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "Riempimento automatico degli utenti SSO" -#: common/models.py:1799 +#: common/models.py:1838 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:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "Posta due volte" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "Al momento della registrazione chiedere due volte all'utente l'indirizzo di posta elettronica" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "Password due volte" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "Al momento della registrazione chiedere agli utenti due volte l'inserimento della password" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "Domini consentiti" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "Gruppo iscrizione" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "Gruppo a cui i nuovi utenti vengono assegnati al momento della registrazione" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "Applica MFA" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "Gli utenti devono utilizzare la sicurezza a due fattori." -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "Controlla i plugin all'avvio" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Controlla che tutti i plugin siano installati all'avvio - abilita in ambienti contenitore" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "Abilita l'integrazione URL" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "Attiva plugin per aggiungere percorsi URL" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "Attiva integrazione navigazione" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "Abilita i plugin per l'integrazione nella navigazione" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "Abilita l'app integrata" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "Abilita plugin per aggiungere applicazioni" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "Abilita integrazione pianificazione" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "Abilita i plugin per eseguire le attività pianificate" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "Abilita eventi integrati" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "Abilita plugin per rispondere agli eventi interni" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "Funzionalità Dell'Inventario" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Abilita la funzionalità d'inventario per la registrazione dei livelli di magazzino e il calcolo del valore di magazzino" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "Inventario periodico automatico" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Numero di giorni tra la registrazione automatica dell'inventario (imposta 0 per disabilitare)" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "I rapporti d'inventario verranno eliminati dopo il numero specificato di giorni" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "Nascondi Articoli Inattivi" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "Mostra articoli sottoscritti" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "Mostra gli articoli sottoscritti nella homepage" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "Mostra le categorie sottoscritte" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "Mostra le categorie dei componenti sottoscritti nella homepage" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "Mostra ultimi articoli" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "Mostra gli ultimi articoli sulla homepage" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "Mostra distinta base non convalidata" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "Mostra le distinte base che attendono la convalida sulla homepage" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "Mostra le modifiche recenti alle giacenze" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "Mostra le giacenze modificate di recente nella homepage" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "Mostra disponibilità scarsa delle giacenze" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "Mostra disponibilità scarsa degli articoli sulla homepage" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "Mostra scorte esaurite" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "Mostra disponibilità scarsa delle scorte degli articoli sulla homepage" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "Mostra scorte necessarie" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "Mostra le scorte degli articoli necessari per la produzione sulla homepage" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "Mostra scorte esaurite" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "Mostra gli articoli stock scaduti nella home page" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "Mostra scorte obsolete" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "Mostra gli elementi obsoleti esistenti sulla home page" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "Mostra produzioni in attesa" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "Mostra produzioni in attesa sulla homepage" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "Mostra produzioni in ritardo" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "Mostra produzioni in ritardo sulla home page" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "Mostra ordini di produzione inevasi" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "Mostra ordini di produzione inevasi sulla home page" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "Mostra Ordini di Produzione in ritardo" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "Mostra Ordini di Produzione in ritardo sulla home page" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "Mostra Ordini di Vendita inevasi" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "Mostra Ordini di Vendita inevasi sulla home page" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "Mostra Ordini di Vendita in ritardo" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "Mostra Ordini di Vendita in ritardo sulla home page" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "Mostra Notizie" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "Mostra notizie sulla home page" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:2094 +#: common/models.py:2139 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:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "Stampante per etichette predefinita" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "Configura quale stampante di etichette deve essere selezionata per impostazione predefinita" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:2110 +#: common/models.py:2155 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:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "Cerca Articoli" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "Mostra articoli della ricerca nella finestra di anteprima" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "Mostra articoli del fornitore nella finestra di anteprima" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "Cerca Articoli Produttore" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "Mostra articoli del produttore nella finestra di anteprima" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "Nascondi Articoli Inattivi" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "Escludi articoli inattivi dalla finestra di anteprima della ricerca" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "Cerca Categorie" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "Mostra categorie articolo nella finestra di anteprima di ricerca" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "Cerca Giacenze" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "Mostra articoli in giacenza nella finestra di anteprima della ricerca" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "Nascondi elementi non disponibili" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "Escludi gli elementi stock che non sono disponibili dalla finestra di anteprima di ricerca" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "Cerca Ubicazioni" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "Mostra ubicazioni delle giacenze nella finestra di anteprima di ricerca" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "Cerca Aziende" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "Mostra le aziende nella finestra di anteprima di ricerca" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "Cerca Ordini Di Produzione" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "Mostra gli ordini di produzione nella finestra di anteprima di ricerca" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "Cerca Ordini di Acquisto" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "Mostra gli ordini di acquisto nella finestra di anteprima di ricerca" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "Escludi Ordini D'Acquisto Inattivi" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "Escludi ordini di acquisto inattivi dalla finestra di anteprima di ricerca" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "Cerca Ordini Di Vendita" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "Visualizzazione degli ordini di vendita nella finestra di anteprima della ricerca" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "Escludi Ordini Di Vendita Inattivi" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "Escludi ordini di vendita inattivi dalla finestra di anteprima di ricerca" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "Cerca Ordini Di Reso" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "Risultati Dell'Anteprima Di Ricerca" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "Numero di risultati da visualizzare in ciascuna sezione della finestra di anteprima della ricerca" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "Ricerca con regex" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "Mostra quantità nei moduli" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "Visualizzare la quantità di pezzi disponibili in alcuni moduli" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "Il tasto Esc chiude i moduli" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "Utilizzare il tasto Esc per chiudere i moduli modali" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "Barra di navigazione fissa" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "La posizione della barra di navigazione è fissata nella parte superiore dello schermo" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "Formato Data" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "Formato predefinito per visualizzare le date" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Programmazione Prodotto" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "Mostra informazioni sulla pianificazione del prodotto" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventario Prodotto" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Visualizza le informazioni d'inventario dell'articolo (se la funzionalità d'inventario è abilitata)" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "Lunghezza Stringa Tabella" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "Quantità prezzo limite" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Prezzo" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "Prezzo unitario in quantità specificata" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "Scadenza" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "Scadenza in cui questa notifica viene ricevuta" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "Nome per questa notifica" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "Nome per questa notifica" msgid "Active" msgstr "Attivo" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "È questa notifica attiva" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "Token" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "Token per l'accesso" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "Segreto" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "Segreto condiviso per HMAC" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "ID Messaggio" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "Identificatore unico per questo messaggio" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "Host" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "Host da cui questo messaggio è stato ricevuto" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "Intestazione" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "Intestazione di questo messaggio" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "Contenuto" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "Contenuto di questo messaggio" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "Scadenza in cui questo messaggio è stato ricevuto" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "Lavorato il" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "Il lavoro su questo messaggio è terminato?" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "Id" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titolo" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "Pubblicato" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "Autore" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "Riepilogo" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "Letto" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "Queste notizie sull'elemento sono state lette?" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "Queste notizie sull'elemento sono state lette?" msgid "Image" msgstr "Immagine" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "File immagine" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "Errore generato dal plugin" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "Articoli importati" msgid "Previous Step" msgstr "Passaggio Precedente" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "Descrizione azienda" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "Descrizione dell'azienda" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "Sito Web" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "Sito web aziendale" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Telefono" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "Numero di telefono di contatto" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "Indirizzo email" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Contatto" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "Punto di contatto" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "Collegamento alle informazioni aziendali esterne" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "è un cliente" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "Vendi oggetti a questa azienda?" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "è un fornitore" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "Acquistate articoli da questa azienda?" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "è un produttore" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "Questa azienda produce articoli?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "Valuta predefinita utilizzata per questa azienda" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Azienda" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Articolo di base" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "Seleziona articolo" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "Seleziona articolo" msgid "Manufacturer" msgstr "Produttore" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Seleziona Produttore" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "Seleziona Produttore" msgid "MPN" msgstr "Codice articolo produttore (MPN)" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "Codice articolo produttore" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "URL dell'articolo del fornitore" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "Descrizione articolo costruttore" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Codice articolo produttore" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "Nome parametro" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Valore" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "Valore del parametro" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "Unità" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "Unità parametri" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo msgid "Supplier" msgstr "Fornitore" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Seleziona fornitore" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "Unità di giacenza magazzino fornitore" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "Selezionare un produttore" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "URL dell'articolo del fornitore" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "Descrizione articolo fornitore" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "Nota" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "costo base" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "Onere minimo (ad esempio tassa di stoccaggio)" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Confezionamento" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "Imballaggio del pezzo" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "Imballaggio del pezzo" msgid "Pack Quantity" msgstr "Quantità Confezione" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "multiplo" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "Ordine multiplo" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "Quantità disponibile dal fornitore" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "Disponibilità Aggiornata" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "Data dell’ultimo aggiornamento dei dati sulla disponibilità" @@ -4080,10 +4196,10 @@ msgstr "Scarica immagine dall'URL" msgid "Delete image" msgstr "Elimina immagine" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "Cliente" msgid "Uses default currency" msgstr "Valuta predefinita" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4112,11 +4228,11 @@ msgstr "Telefono" #: company/templates/company/company_base.html:205 #: part/templates/part/part_base.html:528 msgid "Remove Image" -msgstr "Rimuovi immagine" +msgstr "" #: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" -msgstr "Rimuovi l'immagine associata a questa azienda" +msgstr "" #: company/templates/company/company_base.html:208 #: part/templates/part/part_base.html:531 @@ -4128,12 +4244,12 @@ msgstr "Rimuovi" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "Carica immagine" +msgstr "" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "Download Immagine" +msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 @@ -4316,7 +4432,7 @@ msgstr "Nuovo Parametro" #: company/templates/company/manufacturer_part.html:206 #: templates/js/translated/part.js:1422 msgid "Add Parameter" -msgstr "Aggiungi parametro" +msgstr "" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4432,20 +4548,20 @@ msgstr "Aggiungi riduzione prezzo" #: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" -msgstr "Codice Articolo Fornitore QR" +msgstr "" #: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" -msgstr "Collega Codice a Barre con l'Articolo Fornitore" +msgstr "" #: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" -msgstr "Aggiorna Disponibilità Articolo" +msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "Aziende" msgid "New Company" msgstr "Nuova Azienda" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "Nome etichetta" @@ -4500,7 +4620,7 @@ msgstr "Etichetta" msgid "Label template file" msgstr "File modello etichetta" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "Abilitato" @@ -4524,7 +4644,7 @@ msgstr "Altezza [mm]" msgid "Label height, specified in mm" msgstr "Larghezza dell'etichetta, specificata in mm" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "Formato del nome file" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "Filtri" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "Sconosciuto" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "Prezzo Totale" msgid "No matching purchase order found" msgstr "Nessun ordine di acquisto corrispondente trovato" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "Nessun ordine di acquisto corrispondente trovato" msgid "Purchase Order" msgstr "Ordine D'Acquisto" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "Ordine D'Acquisto" msgid "Return Order" msgstr "Restituisci ordine" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "Sconosciuto" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "Prezzo totale dell'ordine" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "Il contatto non corrisponde all'azienda selezionata" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "Descrizione dell'ordine (opzionale)" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "Seleziona il codice del progetto per questo ordine" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "Collegamento a un sito web esterno" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Data prevista per la consegna dell'ordine. L'ordine scadrà dopo questa data." -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "Creato Da" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "Utente o gruppo responsabile di questo ordine" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "Punto di contatto per questo ordine" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "Riferimento ordine" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "Stato ordine d'acquisto" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "Azienda da cui sono stati ordinati gli articoli" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "Riferimento fornitore" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "Codice di riferimento ordine fornitore" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "ricevuto da" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "Data di emissione" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "Data di emissione ordine" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "Data ordine completato" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "Il fornitore dell'articolo deve corrispondere al fornitore dell'ordine di produzione" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "La quantità deve essere un numero positivo" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "Azienda da cui sono stati ordinati gli elementi" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "Riferimento Cliente " -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "Codice di riferimento Ordine del Cliente" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "Data di spedizione" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "spedito da" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "L'ordine non può essere completato perché nessun articolo è stato assegnato" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "Solo un ordine aperto può essere contrassegnato come completo" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "L'ordine non può essere completato in quanto ci sono spedizioni incomplete" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "L'ordine non può essere completato perché ci sono elementi di riga incompleti" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "Quantità Elementi" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "Riferimento Linea Elemento" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "Note linea elemento" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "Data di destinazione per questa voce di riga (lasciare vuoto per utilizzare la data di destinazione dall'ordine)" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "Contesto" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "Contesto aggiuntivo per questa voce" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "Prezzo unitario" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "L'articolo del fornitore deve corrispondere al fornitore" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "eliminato" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "Ordine" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "Articolo Fornitore" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "Articolo Fornitore" msgid "Received" msgstr "Ricevuto" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "Numero di elementi ricevuti" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Prezzo di Acquisto" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "Prezzo di acquisto unitario" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "Dove l'Acquirente desidera che questo elemento venga immagazzinato?" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "Un articolo virtuale non può essere assegnato ad un ordine di vendita" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "Solo gli articoli vendibili possono essere assegnati a un ordine di vendita" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Prezzo di Vendita" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "Prezzo unitario di vendita" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "Quantità spedita" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "Data di spedizione" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "Verificato Da" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "Utente che ha controllato questa spedizione" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Spedizione" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "Numero di spedizione" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "Numero di monitoraggio" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "Informazioni di monitoraggio della spedizione" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "Numero Fattura" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "Numero di riferimento per la fattura associata" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "La spedizione è già stata spedita" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "La spedizione non ha articoli di stock assegnati" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "L'elemento di magazzino non è stato assegnato" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "Impossibile allocare l'elemento stock a una linea con un articolo diverso" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "Impossibile allocare stock a una riga senza un articolo" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "La quantità di ripartizione non puo' superare la disponibilità della giacenza" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "La quantità deve essere 1 per l'elemento serializzato" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "L'ordine di vendita non corrisponde alla spedizione" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "La spedizione non corrisponde all'ordine di vendita" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "Linea" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "Riferimento della spedizione ordine di vendita" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "Elemento" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "Seleziona elemento stock da allocare" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "Inserisci la quantità assegnata alla giacenza" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "Seleziona l'elemento da restituire dal cliente" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "Data di ricezione" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Risultati" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "L'ordine non può essere cancellato" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "Consenti di chiudere l'ordine con elementi di riga incompleti" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "L'ordine ha elementi di riga incompleti" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "L'ordine non è aperto" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "Valuta prezzo d'acquisto" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "L'articolo del fornitore deve essere specificato" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "L'ordine di acquisto deve essere specificato" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "Il fornitore deve essere abbinato all'ordine d'acquisto" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "L'ordine di acquisto deve essere abbinato al fornitore" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "Elemento Riga" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "L'elemento di riga non corrisponde all'ordine di acquisto" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "Seleziona la posizione di destinazione per gli elementi ricevuti" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "Inserisci il codice univoco per gli articoli in arrivo" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "Inserisci i numeri di serie per gli articoli stock in arrivo" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Codice a Barre" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "Codice a barre scansionato" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "Il codice a barre è già in uso" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "Deve essere fornita una quantità intera per gli articoli rintracciabili" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "Gli elementi di linea devono essere forniti" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "La destinazione deve essere specificata" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "I valori dei codici a barre forniti devono essere univoci" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "Valuta prezzo di vendita" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "Nessun dettaglio di spedizione fornito" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "L'elemento di riga non è associato a questo ordine" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "La quantità deve essere positiva" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "Inserisci i numeri di serie da assegnare" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "La spedizione è già stata spedita" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "La spedizione non è associata con questo ordine" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "Nessuna corrispondenza trovata per i seguenti numeri di serie" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "I seguenti numeri di serie sono già assegnati" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5238,7 +5455,7 @@ msgstr "" #: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" -msgstr "Collega il codice a barre all'ordine d'acquisto" +msgstr "" #: order/templates/order/order_wizard/match_fields.html:9 #: part/templates/part/import_wizard/ajax_match_fields.html:9 @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "Aggiornato {part} prezzo unitario a {price}" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "Aggiornato {part} unità prezzo a {price} e quantità a {qty}" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "Codice Articolo" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "Nome Articolo" @@ -5523,20 +5740,20 @@ msgstr "Nome Articolo" msgid "Part Description" msgstr "Descrizione Articolo" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "IPN - Numero di riferimento interno" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Revisione" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Parole Chiave" @@ -5561,11 +5778,11 @@ msgstr "Posizione Predefinita ID" msgid "Default Supplier ID" msgstr "ID Fornitore Predefinito" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variante Di" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Scorta Minima" @@ -5575,33 +5792,26 @@ msgstr "Scorta Minima" msgid "In Stock" msgstr "In magazzino" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "Ordinato" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "Utilizzato In" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "In Costruzione" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "Costo Minimo" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "Costo Massimo" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "ID principale" @@ -5614,7 +5824,7 @@ msgstr "Nome Principale" msgid "Category Path" msgstr "Percorso Categoria" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "ID Elemento Distinta Base" msgid "Parent IPN" msgstr "IPN Principale" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "IPN Articolo" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Prezzo Minimo" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Prezzo Massimo" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "Ordine D'Acquisto In Arrivo" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "Ordine di Vendita in Uscita" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "Giacenza prodotta dall'Ordine di Costruzione" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "Giacenza richiesta per l'Ordine di Produzione" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "Valido" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "Convalida l'intera Fattura dei Materiali" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "Questa opzione deve essere selezionata" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Posizione Predefinita" @@ -5690,380 +5900,375 @@ msgstr "Posizione Predefinita" msgid "Total Stock" msgstr "Giacenze Totali" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "Disponibilità in magazzino" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "Digita la quantità per il calcolo del prezzo" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Categoria Articoli" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "Categorie Articolo" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "Posizione predefinita per gli articoli di questa categoria" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Strutturale" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Le parti non possono essere assegnate direttamente a una categoria strutturale, ma possono essere assegnate a categorie subordinate." -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "Keywords predefinite" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "Parole chiave predefinite per gli articoli in questa categoria" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Icona" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "Icona (facoltativa)" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "Non puoi rendere principale questa categoria di articoli perché alcuni articoli sono già assegnati!" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "Scelta non valida per l'articolo principale" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "Esiste già un elemento stock con questo numero seriale" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "Non è consentito duplicare IPN nelle impostazioni dell'articolo" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "Un articolo con questo Nome, IPN e Revisione esiste già." -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "Gli articoli non possono essere assegnati a categorie articolo principali!" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "Nome articolo" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "È Template" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "Quest'articolo è un articolo di template?" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "Questa parte è una variante di un altro articolo?" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "Categoria" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "Categoria articolo" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "Numero Dell'articolo Interno" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "Numero di revisione o di versione" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "Dove viene normalmente immagazzinato questo articolo?" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Fornitore predefinito" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "Articolo fornitore predefinito" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "Scadenza Predefinita" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "Scadenza (in giorni) per gli articoli in giacenza di questo pezzo" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "Livello minimo di giacenza consentito" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "Unita di misura per questo articolo" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "Questo articolo può essere costruito da altri articoli?" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "Questo articolo può essere utilizzato per costruire altri articoli?" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "Questo articolo ha il tracciamento per gli elementi unici?" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "Quest'articolo può essere acquistato da fornitori esterni?" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "Questo pezzo può essere venduto ai clienti?" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "Quest'articolo è attivo?" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "È una parte virtuale, come un prodotto software o una licenza?" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "Somma di controllo Distinta Base" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "Somma di controllo immagazzinata Distinta Base" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "Distinta Base controllata da" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "Data di verifica Distinta Base" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "Creazione Utente" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Ultimo Inventario" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "Vendita multipla" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "Valuta utilizzata per calcolare i prezzi" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "Costo Minimo Distinta Base" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "Costo minimo dei componenti dell'articolo" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "Costo Massimo Distinta Base" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "Costo massimo dei componenti dell'articolo" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "Importo Acquisto Minimo" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "Costo minimo di acquisto storico" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "Importo massimo acquisto" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "Costo massimo di acquisto storico" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "Prezzo Interno Minimo" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "Costo minimo basato su interruzioni di prezzo interne" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "Prezzo Interno Massimo" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "Costo massimo basato su interruzioni di prezzo interne" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "Prezzo Minimo Fornitore" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "Prezzo minimo articolo da fornitori esterni" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "Prezzo Massimo Fornitore" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "Prezzo massimo dell'articolo proveniente da fornitori esterni" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "Variazione di costo minimo" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "Costo minimo calcolato di variazione dell'articolo" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "Massima variazione di costo" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "Costo massimo calcolato di variazione dell'articolo" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "Costo minimo totale calcolato" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "Costo massimo totale calcolato" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "Prezzo Di Vendita Minimo" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "Prezzo minimo di vendita basato sulle interruzioni di prezzo" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "Prezzo Di Vendita Massimo" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "Prezzo massimo di vendita basato sulle interruzioni di prezzo" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "Costo Di Vendita Minimo" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "Prezzo storico minimo di vendita" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "Costo Di Vendita Minimo" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "Prezzo storico massimo di vendita" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "Articolo per l'inventario" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "Contatore Elemento" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "Numero di scorte individuali al momento dell'inventario" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "Totale delle scorte disponibili al momento dell'inventario" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "Totale delle scorte disponibili al momento dell'inventario" msgid "Date" msgstr "Data" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "Data in cui è stato effettuato l'inventario" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "Note aggiuntive" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "Utente che ha eseguito questo inventario" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "Costo Minimo Scorta" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "Costo minimo stimato di magazzino a disposizione" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "Costo Massimo Scorte" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "Costo massimo stimato di magazzino a disposizione" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Report" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "File Report Inventario (generato internamente)" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Conteggio Articolo" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "Numero di articoli oggetto d'inventario" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "Utente che ha richiesto questo report inventario" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "Il modello di prova può essere creato solo per gli articoli rintracciabili" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "Una prova con questo nome esiste già per questo articolo" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "Nome Test" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "Inserisci un nome per la prova" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "Descrizione Di Prova" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "Inserisci descrizione per questa prova" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Richiesto" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "Questa prova è necessaria per passare?" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "Valore richiesto" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "Questa prova richiede un valore quando si aggiunge un risultato di prova?" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "Allegato Richiesto" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "Questa prova richiede un file allegato quando si aggiunge un risultato di prova?" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "Il nome del modello del parametro deve essere univoco" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "Nome Parametro" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "Descrizione del parametro" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "Articolo principale" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Modello Parametro" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "Dati" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "Valore del Parametro" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Valore Predefinito" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "Valore Parametro Predefinito" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "ID articolo o nome articolo" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "Valore ID articolo univoco" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "Valore IPN articolo" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "Livello" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "Livello distinta base" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "Distinta base (Bom)" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "Seleziona articolo principale" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "Articolo subordinato" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "Seleziona l'articolo da utilizzare nella Distinta Base" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "Quantità Distinta Base per questo elemento Distinta Base" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "Questo elemento della Distinta Base è opzionale" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "Questo elemento della Distinta Base è consumabile (non è tracciato negli ordini di produzione)" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Eccedenza" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Quantità stimata scarti di produzione (assoluta o percentuale)" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "Riferimento Elemento Distinta Base" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "Note Elemento Distinta Base" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "Codice di controllo" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "Codice di controllo Distinta Base" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Convalidato" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Questo elemento della Distinta Base viene ereditato dalle Distinte Base per gli articoli varianti" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Consenti Le Varianti" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Gli elementi in giacenza per gli articoli varianti possono essere utilizzati per questo elemento Distinta Base" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "La quantità deve essere un valore intero per gli articoli rintracciabili" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "L'articolo subordinato deve essere specificato" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "Elemento Distinta Base Sostituito" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "La parte sostituita non può essere la stessa dell'articolo principale" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "Elemento principale Distinta Base" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "Sostituisci l'Articolo" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "Articolo 1" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "Articolo 2" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "Seleziona Prodotto Relativo" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "Non si può creare una relazione tra l'articolo e sé stesso" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "La relazione duplicata esiste già" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "Valuta di acquisto di questo articolo in stock" @@ -6486,197 +6687,197 @@ msgstr "L'articolo del produttore che corrisponde a questo MPN esiste già" msgid "Supplier part matching this SKU already exists" msgstr "L'articolo del fornitore che corrisponde a questo SKU esiste già" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Duplica articolo" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "Copia i dati iniziali da un altro Articolo" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Stock iniziale" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "Crea Articolo con quantità di scorta iniziale" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "Informazioni Fornitore" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "Aggiungi le informazioni iniziali del fornitore per questo articolo" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "Copia Parametri Categoria" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "Copia i parametri dai modelli della categoria articolo selezionata" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "Limitare il report d'inventario ad un articolo particolare e a eventuali articoli varianti" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "Limita il report d'inventario ad una particolare categoria articolo, e a eventuali categorie secondarie" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "Limita il report d'inventario ad una particolare ubicazione di magazzino, e a eventuali ubicazioni secondarie" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "Genera Report" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "Genera file di report contenente dati di inventario calcolati" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "Aggiorna Articoli" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "Aggiorna gli articoli specificati con i dati calcolati di inventario" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "La funzione Inventario non è abilitata" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "Aggiorna" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "Aggiorna i prezzi per questo articolo" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "Seleziona l'articolo da cui copiare la distinta base" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "Rimuovi Dati Esistenti" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "Rimuovi elementi distinta base esistenti prima di copiare" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "Includi Ereditato" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "Includi gli elementi Distinta Base ereditati da prodotti template" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "Salta Righe Non Valide" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "Abilita questa opzione per saltare le righe non valide" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "Copia Articoli sostitutivi" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "Copia articoli sostitutivi quando duplichi gli elementi distinta base" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "Cancella Distinta Base esistente" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "Rimuovi elementi distinta base esistenti prima del caricamento" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "Nessuna colonna articolo specificata" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "Trovati più articoli corrispondenti" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "Nessun articolo corrispondente trovato" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "L'articolo non è indicato come componente" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "Quantità non fornita" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "Quantità non valida" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "Almeno un elemento della distinta base è richiesto" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "Aggiungi informazioni inventario" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -6939,15 +7140,15 @@ msgstr "Componenti Produttori" #: part/templates/part/detail.html:659 msgid "Related Part" -msgstr "Articoli correlati" +msgstr "" #: part/templates/part/detail.html:667 msgid "Add Related Part" -msgstr "Aggiungi articolo correlato" +msgstr "" #: part/templates/part/detail.html:752 msgid "Add Test Result Template" -msgstr "Aggiungi risultato modello test" +msgstr "" #: part/templates/part/import_wizard/ajax_part_upload.html:29 #: part/templates/part/import_wizard/part_upload.html:14 @@ -7123,31 +7324,27 @@ msgstr "Ricerca per numero seriale" #: part/templates/part/part_base.html:444 msgid "Part QR Code" -msgstr "QR Code Articolo" +msgstr "" #: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" -msgstr "Collega il codice a barre all'Articolo" - -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" msgstr "" #: part/templates/part/part_base.html:512 msgid "Calculate" -msgstr "Calcola" +msgstr "" #: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" -msgstr "Rimuovi l'immagine associata all'articolo" +msgstr "" #: part/templates/part/part_base.html:580 msgid "No matching images found" -msgstr "Nessuna immagine corrispondente trovata" +msgstr "" #: part/templates/part/part_base.html:676 msgid "Hide Part Details" -msgstr "Nascondi Dettagli dell'Articolo" +msgstr "" #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:76 #: part/templates/part/prices.html:227 templates/js/translated/pricing.js:485 @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "Modifica" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "Immagine articolo non trovata" msgid "Part Pricing" msgstr "Prezzo Articolo" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "Nessuna azione specificata" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Nessuna azione corrispondente trovata" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "Scorte insufficienti disponibili" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "Stampa etichetta fallita" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "InvenTree Codice a Barre" @@ -7574,6 +7787,7 @@ msgstr "Fornisce supporto nativo per codici a barre" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" +msgstr "" + +#: plugin/models.py:30 msgid "Plugin Configuration" msgstr "Configurazione Plugin" -#: plugin/models.py:30 +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "Configurazioni Plugin" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "Key" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "Key dei plugin" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "PluginName del plugin" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "Nome Pacchetto" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "Il plugin è attivo" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "Installato" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "Plugin di esempio" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "Plugin Integrato" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Plugin" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "Metodo" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "Nessun autore trovato" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "URL di origine" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Fonte per il pacchetto - questo può essere un registro personalizzato o un percorso VCS" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "Nome Pacchetto" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Nome per il Pacchetto Plugin - può anche contenere un indicatore di versione" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "Versione" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "Conferma installazione plugin" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Questo plugin verrà installato ora nell'istanza corrente. L'istanza andrà in manutenzione." -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "Installazione non confermata" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "Deve essere fornito uno dei nomi del pacchetto URL" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "Nessun oggetto valido fornito nel modello" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "Nome modello" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "File modello di report" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "Descrizione del modello report" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "Numero di revisione del rapporto (auto-incrementi)" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "Sequenza per generare i nomi dei file report" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "Modello report abilitato" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Filtri di ricerca elementi di stock (elenco separato da virgole key=coppia di valori)" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "Includi Test Installati" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "Includi i risultati dei test per gli elementi stock installati all'interno dell'elemento assemblato" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "Filtri di produzione" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Filtri di ricerca produzione (elenco separato da virgole key=coppia di valori" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "Filtri Articolo" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Filtri di ricerca articolo (elenco separato da virgole key=coppia di valori" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "Ordine di Acquisto filtra la ricerca" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "Ordine di Vendita filtra la ricerca" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "Snippet" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "Report file snippet" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "Descrizione file snippet" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "Risorsa" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "Report file risorsa" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "File risorsa descrizione" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "Totale" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "Risultati Test" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "Test" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "Risultato" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "Elementi installati" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Seriale" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "ID Posizione" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "Nome Ubicazione" @@ -8177,56 +8449,56 @@ msgstr "Nome Ubicazione" msgid "Location Path" msgstr "Percorso Ubicazione" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "ID Elemento Stock" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "Codici di stato" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "ID Articolo Fornitore" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "ID Fornitore" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "Nome Fornitore" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "ID Cliente" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Installato In" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "ID Costruttore" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "ID Ordine Vendita" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "ID Ordine D'acquisto" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "Revisione Necessaria" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "Elimina al esaurimento" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "Data di Scadenza" msgid "External Location" msgstr "Ubicazione Esterna" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Obsoleto" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "La quantità è richiesta" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "Deve essere fornita un articolo valido" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "I numeri di serie non possono essere forniti per un articolo non tracciabile" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "Ubicazione magazzino" msgid "Stock Locations" msgstr "Posizioni magazzino" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Proprietario" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "Seleziona Owner" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "Non puoi rendere strutturale questa posizione di magazzino perché alcuni elementi di magazzino sono già posizionati al suo interno!" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "Gli articoli di magazzino non possono essere ubicati in posizioni di magazzino strutturali!" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "Non è possibile creare un elemento di magazzino per articoli virtuali" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "La quantità deve essere 1 per elementi con un numero di serie" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Il numero di serie non può essere impostato se la quantità è maggiore di 1" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "L'elemento non può appartenere a se stesso" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "L'elemento deve avere un riferimento di costruzione se is_building=True" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "Il riferimento di costruzione non punta allo stesso oggetto dell'articolo" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "Elemento di magazzino principale" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "Articolo base" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "Seleziona un fornitore articolo corrispondente per questo elemento di magazzino" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "Dove si trova questo articolo di magazzino?" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "Imballaggio di questo articolo di magazzino è collocato in" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "Questo elemento è stato installato su un altro elemento?" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "Numero di serie per questo elemento" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "Codice lotto per questo elemento di magazzino" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "Quantità disponibile" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "Genera Costruzione" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "Costruisci per questo elemento di magazzino" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "Origina Ordine di Acquisto" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "Ordine d'acquisto per questo articolo in magazzino" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "Destinazione Ordine di Vendita" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Data di scadenza per l'elemento di magazzino. Le scorte saranno considerate scadute dopo questa data" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "Elimina al esaurimento" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "Cancella questo Elemento di Magazzino quando la giacenza è esaurita" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "Prezzo di acquisto unitario al momento dell’acquisto" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "Convertito in articolo" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "L'articolo non è impostato come tracciabile" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "La quantità deve essere un numero intero" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "I numeri di serie devono essere numeri interi" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "La quantità non corrisponde ai numeri di serie" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "Numeri di serie già esistenti" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "L'elemento di magazzino è stato assegnato a un ordine di vendita" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "L'elemento di magazzino è installato in un altro elemento" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "L'elemento di magazzino contiene altri elementi" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "L'elemento di magazzino è stato assegnato a un cliente" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "L'elemento di magazzino è attualmente in produzione" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "Il magazzino serializzato non può essere unito" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "Duplica elementi di magazzino" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "Gli elementi di magazzino devono riferirsi allo stesso articolo" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "Gli elementi di magazzino devono riferirsi allo stesso articolo fornitore" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "I codici di stato dello stock devono corrispondere" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "Le giacenze non possono essere spostate perché non disponibili" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "Note d'ingresso" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "Il valore deve essere fornito per questo test" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "L'allegato deve essere caricato per questo test" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "Nome Test" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "Risultato Test" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "Test valore output" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "Risultato della prova allegato" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "Note del test" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "Il numero di serie è troppo grande" @@ -8558,157 +8830,161 @@ msgstr "Il numero di serie è troppo grande" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "Inserisci il numero di elementi di magazzino da serializzare" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "La quantità non deve superare la quantità disponibile ({q})" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "Inserisci i numeri di serie per i nuovi elementi" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "Posizione magazzino di destinazione" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "Note opzionali elemento" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "Numeri di serie non possono essere assegnati a questo articolo" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "Seleziona elementi di magazzino da installare" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "Aggiungi nota di transazione (opzionale)" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "Elemento di magazzino non disponibile" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "L'articolo selezionato non è nella Fattura dei Materiali" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "Posizione di destinazione per gli elementi disinstallati" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "Seleziona l'articolo in cui convertire l'elemento di magazzino" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "L'articolo selezionato non è una valida opzione per la conversione" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "Posizione di destinazione per l'elemento restituito" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "L'articolo deve essere vendibile" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "L'elemento è assegnato a un ordine di vendita" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "Elemento assegnato a un ordine di costruzione" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "Cliente a cui assegnare elementi di magazzino" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "L'azienda selezionata non è un cliente" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "Note sull'assegnazione delle scorte" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "Deve essere fornito un elenco degli elementi di magazzino" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "Note di fusione di magazzino" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "Consenti fornitori non corrispondenti" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "Consenti di unire gli elementi di magazzino che hanno fornitori diversi" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "Consenti stato non corrispondente" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "Consenti di unire gli elementi di magazzino con diversi codici di stato" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "Devono essere riforniti almeno due elementi in magazzino" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "Valore di chiave primaria StockItem" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "Note sugli spostamenti di magazzino" @@ -8759,7 +9035,7 @@ msgstr "Elimina tutti i risultati del test per questo elemento di magazzino" #: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" -msgstr "Aggiungi Risultato Test" +msgstr "" #: stock/templates/stock/item_base.html:33 msgid "Locate stock item" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "Cancella elemento di magazzino" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Produzione" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "Quantità Disponibile" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "Nessuna posizione impostata" @@ -8949,15 +9225,15 @@ msgstr "" #: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" -msgstr "Modifica Stato Magazzino" +msgstr "" #: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" -msgstr "Stock Item QR Code" +msgstr "" #: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" -msgstr "Collega il codice a barre all'Elemento Stock" +msgstr "" #: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." @@ -8973,11 +9249,11 @@ msgstr "Questa azione non può essere facilmente annullata" #: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" -msgstr "Converti Elemento Stock" +msgstr "" #: stock/templates/stock/item_base.html:662 msgid "Return to Stock" -msgstr "Torna al Magazzino" +msgstr "" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." @@ -9060,15 +9336,15 @@ msgstr "" #: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" -msgstr "Container magazzino scansionato in questa posizione" +msgstr "" #: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" -msgstr "Codice QR Ubicazione Magazzino" +msgstr "" #: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" -msgstr "Collega il Codice a Barre alla Posizione Magazzino" +msgstr "" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." @@ -9142,71 +9418,71 @@ msgstr "Indice" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "Articoli Sottoscritti" +msgstr "" #: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "Categoria sottoscritta" +msgstr "" #: templates/InvenTree/index.html:62 msgid "Latest Parts" -msgstr "Articoli Recenti" +msgstr "" #: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" -msgstr "Distinta base In Attesa Di Convalida" +msgstr "" #: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "Aggiornamento Recente" +msgstr "" #: templates/InvenTree/index.html:134 msgid "Depleted Stock" -msgstr "Stock esaurito" +msgstr "" #: templates/InvenTree/index.html:148 msgid "Required for Build Orders" -msgstr "Richiesto per gli Ordini di Produzione" +msgstr "" #: templates/InvenTree/index.html:156 msgid "Expired Stock" -msgstr "Stock Scaduto" +msgstr "" #: templates/InvenTree/index.html:172 msgid "Stale Stock" -msgstr "Stock obsoleto" +msgstr "" #: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "Ordini di Produzione Attivi" +msgstr "" #: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "Ordini Di Produzione Scaduti" +msgstr "" #: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" -msgstr "Ordini Di Acquisto In Corso" +msgstr "" #: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" -msgstr "Ordini Di Acquisto In Ritardo" +msgstr "" #: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" -msgstr "Ordini Di Vendita In Corso" +msgstr "" #: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" -msgstr "Ordini Di Vendita in ritardo" +msgstr "" #: templates/InvenTree/index.html:299 msgid "InvenTree News" -msgstr "Novità InvenTree" +msgstr "" #: templates/InvenTree/index.html:301 msgid "Current News" -msgstr "Notizie Attuali" +msgstr "" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" @@ -9236,11 +9512,11 @@ msgstr "Notifiche" #: templates/InvenTree/notifications/notifications.html:38 msgid "No unread notifications found" -msgstr "Nessuna notifica non letta" +msgstr "" #: templates/InvenTree/notifications/notifications.html:58 msgid "No notification history found" -msgstr "Nessuna cronologia notifiche trovata" +msgstr "" #: templates/InvenTree/notifications/notifications.html:65 msgid "Delete all read notifications" @@ -9249,7 +9525,7 @@ msgstr "Elimina tutte le notifiche lette" #: templates/InvenTree/notifications/notifications.html:89 #: templates/js/translated/notification.js:85 msgid "Delete Notification" -msgstr "Elimina notifica" +msgstr "" #: templates/InvenTree/notifications/sidebar.html:8 msgid "Inbox" @@ -9412,11 +9688,6 @@ msgstr "Messaggio" msgid "Plugin information" msgstr "Informazioni Plugin" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "Versione" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "nessuna informazione di versione fornita" @@ -9545,28 +9816,28 @@ msgstr "Modifica impostazioni" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" -msgstr "Modifica Impostazioni Plugin" +msgstr "" #: templates/InvenTree/settings/settings_js.html:60 msgid "Edit Notification Setting" -msgstr "Modifica Impostazioni Notifica" +msgstr "" #: templates/InvenTree/settings/settings_js.html:63 msgid "Edit Global Setting" -msgstr "Modifica Impostazioni Globali" +msgstr "" #: templates/InvenTree/settings/settings_js.html:65 msgid "Edit User Setting" -msgstr "Modifica Impostazioni Utente" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:49 msgid "Rate" -msgstr "Voto" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Elimina" @@ -9584,36 +9855,36 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" -msgstr "Nessun codice progetto trovato" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" -msgstr "gruppo" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:175 #: templates/InvenTree/settings/settings_staff_js.html:189 msgid "Edit Project Code" -msgstr "Modifica Codice Progetto" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:176 #: templates/InvenTree/settings/settings_staff_js.html:203 msgid "Delete Project Code" -msgstr "Elimina Codice Progetto" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:285 msgid "No category parameter templates found" -msgstr "Nessun parametro di categoria trovato" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 #: templates/js/translated/part.js:1645 msgid "Edit Template" -msgstr "Modifica Template" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 #: templates/js/translated/part.js:1646 msgid "Delete Template" -msgstr "Elimina Template" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:326 msgid "Edit Category Parameter Template" @@ -9621,15 +9892,15 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:353 msgid "Delete Category Parameter Template" -msgstr "Elimina Modello Parametro Categoria" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:388 msgid "Create Category Parameter Template" -msgstr "Crea Template Parametro Categoria" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:418 msgid "Create Part Parameter Template" -msgstr "Crea Parametro Articolo Template" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:440 msgid "No stock location types found" @@ -9853,7 +10124,7 @@ msgstr "%(time)s fa" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "Vuoi davvero rimuovere gli indirizzi email selezionati?" +msgstr "" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" @@ -10043,7 +10314,7 @@ msgstr "Non sei ancora iscritto?" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "Registrati" @@ -10123,7 +10394,7 @@ msgstr "L'iscrizione è attualmente chiusa." #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "Torna alla pagina di login" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "I seguenti articoli sono pochi nel magazzino richiesto" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "Quantità richiesta" @@ -10272,59 +10543,59 @@ msgstr "Quantità minima" #: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" -msgstr "Nessuna Risposta" +msgstr "" #: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" -msgstr "Nessuna risposta dal server InvenTree" +msgstr "" #: templates/js/translated/api.js:232 msgid "Error 400: Bad request" -msgstr "Errore 400: Richiesta Errata" +msgstr "" #: templates/js/translated/api.js:233 msgid "API request returned error code 400" -msgstr "Richiesta API restituito codice di errore 400" +msgstr "" #: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" -msgstr "Errore 401: Non Autenticato" +msgstr "" #: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" -msgstr "Credenziali di autenticazione non fornite" +msgstr "" #: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" -msgstr "Errore 403 - Permesso negato" +msgstr "" #: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "Non hai i permessi necessari per accedere a questa funzione" +msgstr "" #: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" -msgstr "Errore 404: Risorsa Non Trovata" +msgstr "" #: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" -msgstr "La risorsa richiesta non può essere localizzata sul server" +msgstr "" #: templates/js/translated/api.js:252 msgid "Error 405: Method Not Allowed" -msgstr "Errore 405: Metodo Non Consentito" +msgstr "" #: templates/js/translated/api.js:253 msgid "HTTP method not allowed at URL" -msgstr "Metodo HTTP non consentito all'URL" +msgstr "" #: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "Errore 408: Timeout" +msgstr "" #: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" -msgstr "Timeout connessione durante la richiesta di dati dal server" +msgstr "" #: templates/js/translated/api.js:261 msgid "Error 503: Service Unavailable" @@ -10336,19 +10607,19 @@ msgstr "" #: templates/js/translated/api.js:265 msgid "Unhandled Error Code" -msgstr "Codice Di Errore Non Gestito" +msgstr "" #: templates/js/translated/api.js:266 msgid "Error code" -msgstr "Codice errore" +msgstr "" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" -msgstr "Tutti gli allegati selezionati saranno eliminati" +msgstr "" #: templates/js/translated/attachment.js:129 msgid "Delete Attachments" -msgstr "Elimina Allegati" +msgstr "" #: templates/js/translated/attachment.js:205 msgid "Delete attachments" @@ -10360,60 +10631,60 @@ msgstr "" #: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "Allegati non trovati" +msgstr "" #: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "Modifica allegato" +msgstr "" #: templates/js/translated/attachment.js:346 msgid "Upload Date" -msgstr "Data di Upload" +msgstr "" #: templates/js/translated/attachment.js:366 msgid "Edit attachment" -msgstr "Modifica allegato" +msgstr "" #: templates/js/translated/attachment.js:374 msgid "Delete attachment" -msgstr "Cancella allegato" +msgstr "" #: templates/js/translated/barcode.js:43 msgid "Scan barcode data here using barcode scanner" -msgstr "Scansiona il codice a barre usando uno scanner" +msgstr "" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "Inserire il codice a barre" +msgstr "" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" -msgstr "Scansiona il codice a barre usando la webcam" +msgstr "" #: templates/js/translated/barcode.js:138 msgid "Enter optional notes for stock transfer" -msgstr "Inserire le note facoltative per il trasferimento delle scorte" +msgstr "" #: templates/js/translated/barcode.js:139 msgid "Enter notes" -msgstr "Inserire le note" +msgstr "" #: templates/js/translated/barcode.js:188 msgid "Server error" -msgstr "Problemi con il server" +msgstr "" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" -msgstr "Risposta sconosciuta dal server" +msgstr "" #: templates/js/translated/barcode.js:252 #: templates/js/translated/modals.js:1120 msgid "Invalid server response" -msgstr "Risposta del server non valida" +msgstr "" #: templates/js/translated/barcode.js:372 msgid "Scan barcode data" -msgstr "Scansione del codice a barre" +msgstr "" #: templates/js/translated/barcode.js:420 templates/navbar.html:114 msgid "Scan Barcode" @@ -10421,85 +10692,85 @@ msgstr "Scansiona codice a barre" #: templates/js/translated/barcode.js:458 msgid "No URL in response" -msgstr "Nessuna risposta dall'URL" +msgstr "" #: templates/js/translated/barcode.js:498 msgid "This will remove the link to the associated barcode" -msgstr "Questo rimuoverà il collegamento al codice a barre associato" +msgstr "" #: templates/js/translated/barcode.js:504 msgid "Unlink" -msgstr "Scollega" +msgstr "" #: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 msgid "Remove stock item" -msgstr "Rimuovere l'articolo in magazzino" +msgstr "" #: templates/js/translated/barcode.js:610 msgid "Scan Stock Items Into Location" -msgstr "Scansione articoli di magazzino in sede" +msgstr "" #: templates/js/translated/barcode.js:612 msgid "Scan stock item barcode to check in to this location" -msgstr "Scansione del codice a barre dell'articolo di magazzino per effettuare il check-in in questa sede" +msgstr "" #: templates/js/translated/barcode.js:615 #: templates/js/translated/barcode.js:812 msgid "Check In" -msgstr "Check In" +msgstr "" #: templates/js/translated/barcode.js:647 msgid "No barcode provided" -msgstr "Non c'è un codice a barre" +msgstr "" #: templates/js/translated/barcode.js:687 msgid "Stock Item already scanned" -msgstr "Articolo di magazzino già scansionato" +msgstr "" #: templates/js/translated/barcode.js:691 msgid "Stock Item already in this location" -msgstr "Elemento in giacenza già in questa posizione" +msgstr "" #: templates/js/translated/barcode.js:698 msgid "Added stock item" -msgstr "Aggiunta di un articolo di magazzino" +msgstr "" #: templates/js/translated/barcode.js:707 msgid "Barcode does not match valid stock item" -msgstr "Il codice a barre non corrisponde a un articolo di magazzino valido" +msgstr "" #: templates/js/translated/barcode.js:726 msgid "Scan Stock Container Into Location" -msgstr "Scansione delle scorte contenute in sede" +msgstr "" #: templates/js/translated/barcode.js:728 msgid "Scan stock container barcode to check in to this location" -msgstr "Scansionare il codice a barre di scorta contenuta per effettuare il check-in in questa sede" +msgstr "" #: templates/js/translated/barcode.js:762 msgid "Barcode does not match valid stock location" -msgstr "Il codice a barre non corrisponde a una posizione di magazzino valida" +msgstr "" #: templates/js/translated/barcode.js:806 msgid "Check Into Location" -msgstr "Controlla Nella Posizione" +msgstr "" #: templates/js/translated/barcode.js:875 #: templates/js/translated/barcode.js:884 msgid "Barcode does not match a valid location" -msgstr "Il codice a barre non corrisponde a una posizione valida" +msgstr "" #: templates/js/translated/bom.js:78 msgid "Create BOM Item" -msgstr "Creare un elemento della distinta base" +msgstr "" #: templates/js/translated/bom.js:132 msgid "Display row data" -msgstr "Visualizzare i dati" +msgstr "" #: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "Dati" +msgstr "" #: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 #: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 @@ -10511,103 +10782,103 @@ msgstr "Chiudi" #: templates/js/translated/bom.js:306 msgid "Download BOM Template" -msgstr "Scarica il modello di distinta base" +msgstr "" #: templates/js/translated/bom.js:351 msgid "Multi Level BOM" -msgstr "Distinta base multilivello" +msgstr "" #: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" -msgstr "Includere i dati della distinta base per i sottoassiemi" +msgstr "" #: templates/js/translated/bom.js:357 msgid "Levels" -msgstr "Livelli" +msgstr "" #: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "Selezionare il numero massimo di livelli di distinta base da esportare (0 = tutti i livelli)" +msgstr "" #: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" -msgstr "Includere Articoli Alternativi" +msgstr "" #: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" -msgstr "Includere articoli alternativi nella distinta base esportata" +msgstr "" #: templates/js/translated/bom.js:371 msgid "Include Parameter Data" -msgstr "Includere i dati dei parametri" +msgstr "" #: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" -msgstr "Includere i dati dei parametri degli articoli nella distinta base esportata" +msgstr "" #: templates/js/translated/bom.js:377 msgid "Include Stock Data" -msgstr "Includere i dati delle scorte" +msgstr "" #: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" -msgstr "Includere i dati delle scorte dei pezzi nella distinta base esportata" +msgstr "" #: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" -msgstr "Includere i dati del produttore" +msgstr "" #: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" -msgstr "Includere i dati del produttore delle parti nella distinta base esportata" +msgstr "" #: templates/js/translated/bom.js:389 msgid "Include Supplier Data" -msgstr "Includere i dati dei fornitori" +msgstr "" #: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" -msgstr "Includere i dati del fornitore di parti nella distinta base esportata" +msgstr "" #: templates/js/translated/bom.js:395 msgid "Include Pricing Data" -msgstr "Includere i prezzi" +msgstr "" #: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" -msgstr "Includere i prezzi delle parti nella distinta base esportata" +msgstr "" #: templates/js/translated/bom.js:591 msgid "Remove substitute part" -msgstr "Rimuovi articolo sostitutivo" +msgstr "" #: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" -msgstr "Seleziona e aggiungi un nuovo articolo sostitutivo utilizzando l'input qui sotto" +msgstr "" #: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" -msgstr "Sei sicuro di voler rimuovere questo collegamento all' articolo sostitutivo?" +msgstr "" #: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" -msgstr "Rimuovi Articolo Sostitutivo" +msgstr "" #: templates/js/translated/bom.js:701 msgid "Add Substitute" -msgstr "Aggiungi Sostitutivo" +msgstr "" #: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" -msgstr "Modifica Elementi Sostitutivi Distinta Base" +msgstr "" #: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" -msgstr "Tutti gli elementi selezionati della Distinta Base saranno eliminati" +msgstr "" #: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" -msgstr "Elimina gli Elementi selezionati della Distinta Base?" +msgstr "" #: templates/js/translated/bom.js:826 msgid "Delete items" @@ -10615,511 +10886,511 @@ msgstr "" #: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" -msgstr "Carica la Distinta Base per il sotto assemblaggio" +msgstr "" #: templates/js/translated/bom.js:946 msgid "Substitutes Available" -msgstr "Sostituti Disponibili" +msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" -msgstr "Variante stock consentita" +msgstr "" #: templates/js/translated/bom.js:1014 msgid "Substitutes" -msgstr "Sostituti" +msgstr "" #: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" -msgstr "I prezzi Distinta Base sono completi" +msgstr "" #: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" -msgstr "I prezzi Distinta Base sono incompleti" +msgstr "" #: templates/js/translated/bom.js:1151 msgid "No pricing available" -msgstr "Nessun prezzo disponibile" +msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" -msgstr "Nessuna Scorta Disponibile" +msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" -msgstr "Include variante e scorte sostitutive" +msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" -msgstr "Comprende varianti magazzino" +msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" -msgstr "Comprende le scorte sostitutive" +msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" -msgstr "Elementi consumabili" +msgstr "" #: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" -msgstr "Convalida elemento Distinta Base" +msgstr "" #: templates/js/translated/bom.js:1281 msgid "This line has been validated" -msgstr "Questa linea è stata convalidata" +msgstr "" #: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" -msgstr "Modifica articoli sostitutivi" +msgstr "" #: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" -msgstr "Modifica elemento Distinta Base" +msgstr "" #: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" -msgstr "Cancella elemento Distinta Base" +msgstr "" #: templates/js/translated/bom.js:1307 msgid "View BOM" -msgstr "Visualizza Distinta Base" +msgstr "" #: templates/js/translated/bom.js:1391 msgid "No BOM items found" -msgstr "Nessun elemento trovato in Distinta Base" +msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" -msgstr "Articolo richiesto" +msgstr "" #: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" -msgstr "Ereditato dalla Distinta Base principale" +msgstr "" #: templates/js/translated/build.js:142 msgid "Edit Build Order" -msgstr "Modifica Ordine di produzione" +msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" -msgstr "Crea Ordine di Produzione" +msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" -msgstr "Annulla Ordine Di Produzione" +msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" -msgstr "Sei sicuro di voler annullare questa produzione?" +msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" -msgstr "Gli elementi di magazzino è stata assegnata a questo ordine di produzione" +msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" -msgstr "Ci sono output incompleti rimanenti per questo ordine di produzione" +msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" -msgstr "L'ordine di produzione è pronto per essere completato" - -#: templates/js/translated/build.js:299 -msgid "This build order cannot be completed as there are incomplete outputs" -msgstr "Questo ordine di produzione non può essere completato in quanto ci sono output incompleti" +msgstr "" #: templates/js/translated/build.js:304 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "" + +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" -msgstr "L'Ordine di Produzione è incompleto" +msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" -msgstr "Completa l'Ordine di Produzione" +msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" -msgstr "Il prossimo numero di serie disponibile è" +msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "Ultimo Numero Di Serie" +msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" -msgstr "La distinta base contiene articoli tracciabili" +msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" -msgstr "Gli outputs della produzione devono essere generati singolarmente" +msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" -msgstr "Gli articoli tracciabili possono avere numeri di serie specificati" +msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "Inserisci i numeri seriali per generare più output di produzione" +msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" -msgstr "Crea Output di Produzione" +msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" -msgstr "Assegna gli elementi di magazzino a questo output di produzione" +msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" -msgstr "Completa output di produzione" +msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" -msgstr "Cancella output di produzione" +msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" -msgstr "Seleziona Output di produzione" +msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" -msgstr "Almeno un output di produzione deve essere selezionato" +msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" -msgstr "Output" +msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" -msgstr "Completa l'output di produzione" +msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" -msgstr "Cancella l'output di produzione" +msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" -msgstr "Nessuna allocazione per l'ordine di produzione trovato" +msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" -msgstr "Posizione non specificata" +msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" -msgstr "Completa gli outputs" +msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" -msgstr "Cancella l'output" - -#: templates/js/translated/build.js:1110 -msgid "build output" -msgstr "" - -#: templates/js/translated/build.js:1111 -msgid "build outputs" msgstr "" #: templates/js/translated/build.js:1115 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1116 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" -msgstr "Nessun output di produzione attivo trovato" +msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "Seleziona Articoli" +msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" -msgstr "È necessario selezionare almeno un articolo da assegnare" +msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" -msgstr "Specificare il quantitativo assegnato allo stock" +msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" -msgstr "Tutti gli articoli assegnati" +msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" -msgstr "Tutti gli articoli selezionati sono stati completamente assegnati" +msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 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)" +msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" -msgstr "Assegna gli Elementi Stock all'Ordine di Produzione" +msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" -msgstr "Nessuna posizione di magazzino corrispondente" +msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" -msgstr "Nessun elemento corrispondente trovato" +msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" -msgstr "Assegna Automaticamente Scorte" +msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "Gli elementi in magazzino saranno automaticamente assegnati a questo ordine di produzione, secondo le linee guida fornite" +msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" -msgstr "Se viene specificata una posizione, le scorte saranno assegnate solo da quella ubicazione" +msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" -msgstr "Se lo stock è considerato intercambiabile, sarà assegnato dal primo luogo in cui viene trovato" +msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" -msgstr "Se lo stock sostitutivo è ammesso, sarà utilizzato nel caso in cui lo stock dell'articolo primario non possa essere trovato" +msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" -msgstr "Assegna Elementi di Magazzino" +msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" -msgstr "Nessuna produzione corrispondente alla ricerca" +msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" -msgstr "Seleziona" +msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" -msgstr "L'ordine di produzione è in ritardo" +msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" -msgstr "Avanzamento" +msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" -msgstr "Nessuna informazione utente" +msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" -msgstr "Modifica allocazione magazzino" +msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" -msgstr "Elimina posizione giacenza" +msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" -msgstr "Modifica Posizione" +msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" -msgstr "Rimuovi Posizione" +msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" -msgstr "Parte tracciabile" +msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" -msgstr "Scorte sufficienti disponibili" +msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" -msgstr "Produci scorta" +msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" -msgstr "Ordina scorta" +msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" -msgstr "Assegna scorta" +msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" #: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "Aggiungi Produttore" +msgstr "" #: templates/js/translated/company.js:111 #: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "Aggiungi Articolo Produttore" +msgstr "" #: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "Modifica Articolo Produttore" +msgstr "" #: templates/js/translated/company.js:201 #: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "Aggiungi fornitore" +msgstr "" #: templates/js/translated/company.js:243 #: templates/js/translated/purchase_order.js:352 msgid "Add Supplier Part" -msgstr "Aggiungi fornitore articolo" +msgstr "" #: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" -msgstr "Tutte gli articoli del fornitore selezionati saranno eliminati" +msgstr "" #: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" -msgstr "Cancella Articoli Fornitore" +msgstr "" #: templates/js/translated/company.js:465 msgid "Add new Company" -msgstr "Aggiungi nuova Azienda" +msgstr "" #: templates/js/translated/company.js:536 msgid "Parts Supplied" -msgstr "Fornitori articoli" +msgstr "" #: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "Articoli prodotti" +msgstr "" #: templates/js/translated/company.js:560 msgid "No company information found" -msgstr "Nessuna informazione azienda trovata" +msgstr "" #: templates/js/translated/company.js:609 msgid "Create New Contact" -msgstr "Crea nuovo contatto" +msgstr "" #: templates/js/translated/company.js:625 #: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "Modifica contatto" +msgstr "" #: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" @@ -11128,7 +11399,7 @@ msgstr "" #: templates/js/translated/company.js:668 #: templates/js/translated/company.js:732 msgid "Role" -msgstr "Ruolo" +msgstr "" #: templates/js/translated/company.js:676 msgid "Delete Contacts" @@ -11136,19 +11407,19 @@ msgstr "" #: templates/js/translated/company.js:707 msgid "No contacts found" -msgstr "Nessun contatto trovato" +msgstr "" #: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "Numero di telefono" +msgstr "" #: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "Indirizzo email" +msgstr "" #: templates/js/translated/company.js:752 msgid "Delete Contact" -msgstr "Elimina contatto" +msgstr "" #: templates/js/translated/company.js:849 msgid "Create New Address" @@ -11193,28 +11464,28 @@ msgstr "" #: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" -msgstr "Tutti gli articoli del produttore selezionati saranno eliminati" +msgstr "" #: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" -msgstr "Elimina Articoli Produttore" +msgstr "" #: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" -msgstr "Tutti i parametri selezionati saranno cancellati" +msgstr "" #: templates/js/translated/company.js:1165 msgid "Delete Parameters" -msgstr "Elimina Parametri" +msgstr "" #: templates/js/translated/company.js:1181 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 msgid "Order parts" -msgstr "Articoli ordinati" +msgstr "" #: templates/js/translated/company.js:1198 msgid "Delete manufacturer parts" -msgstr "Elimina articoli produttore" +msgstr "" #: templates/js/translated/company.js:1230 msgid "Manufacturer part actions" @@ -11222,47 +11493,47 @@ msgstr "" #: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" -msgstr "Nessun articolo produttore trovato" +msgstr "" #: templates/js/translated/company.js:1269 #: templates/js/translated/company.js:1557 templates/js/translated/part.js:798 #: templates/js/translated/part.js:1210 msgid "Template part" -msgstr "Modello Articolo" +msgstr "" #: templates/js/translated/company.js:1273 #: templates/js/translated/company.js:1561 templates/js/translated/part.js:802 #: templates/js/translated/part.js:1214 msgid "Assembled part" -msgstr "Articolo assemblato" +msgstr "" #: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464 msgid "No parameters found" -msgstr "Nessun parametro trovato" +msgstr "" #: templates/js/translated/company.js:1428 templates/js/translated/part.js:1527 msgid "Edit parameter" -msgstr "Modifica parametro" +msgstr "" #: templates/js/translated/company.js:1429 templates/js/translated/part.js:1528 msgid "Delete parameter" -msgstr "Elimina il parametro" +msgstr "" #: templates/js/translated/company.js:1446 templates/js/translated/part.js:1433 msgid "Edit Parameter" -msgstr "Modifica parametro" +msgstr "" #: templates/js/translated/company.js:1455 templates/js/translated/part.js:1549 msgid "Delete Parameter" -msgstr "Elimina Parametri" +msgstr "" #: templates/js/translated/company.js:1486 msgid "Delete supplier parts" -msgstr "Elimina articolo fornitore" +msgstr "" #: templates/js/translated/company.js:1536 msgid "No supplier parts found" -msgstr "Nessun fornitore trovato" +msgstr "" #: templates/js/translated/company.js:1654 msgid "Base Units" @@ -11270,63 +11541,63 @@ msgstr "" #: templates/js/translated/company.js:1684 msgid "Availability" -msgstr "Disponibilità" +msgstr "" #: templates/js/translated/company.js:1715 msgid "Edit supplier part" -msgstr "Modifica articolo fornitore" +msgstr "" #: templates/js/translated/company.js:1716 msgid "Delete supplier part" -msgstr "Elimina articolo fornitore" +msgstr "" #: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" -msgstr "Elimina riduzione di prezzo" +msgstr "" #: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" -msgstr "Modifica Prezzo Limite" +msgstr "" #: templates/js/translated/company.js:1794 msgid "No price break information found" -msgstr "Nessuna informazione di riduzione di prezzo trovata" +msgstr "" #: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "Ultimo aggiornamento" +msgstr "" #: templates/js/translated/company.js:1830 msgid "Edit price break" -msgstr "Modifica riduzione di prezzo" +msgstr "" #: templates/js/translated/company.js:1831 msgid "Delete price break" -msgstr "Cancella riduzione di prezzo" +msgstr "" #: templates/js/translated/filters.js:186 #: templates/js/translated/filters.js:672 msgid "true" -msgstr "vero" +msgstr "" #: templates/js/translated/filters.js:190 #: templates/js/translated/filters.js:673 msgid "false" -msgstr "falso" +msgstr "" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "Seleziona filtro" +msgstr "" #: templates/js/translated/filters.js:437 msgid "Print Labels" -msgstr "Stampa Etichette" +msgstr "" #: templates/js/translated/filters.js:441 msgid "Print Reports" -msgstr "Stampa report" +msgstr "" #: templates/js/translated/filters.js:453 msgid "Download table data" @@ -11338,44 +11609,44 @@ msgstr "" #: templates/js/translated/filters.js:469 msgid "Add new filter" -msgstr "Aggiungi nuovo filtro" +msgstr "" #: templates/js/translated/filters.js:477 msgid "Clear all filters" -msgstr "Cancella tutti i filtri" +msgstr "" #: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "Crea filtro" +msgstr "" #: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 #: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" -msgstr "Azione Vietata" +msgstr "" #: templates/js/translated/forms.js:376 msgid "Create operation not allowed" -msgstr "Crea operazione non consentita" +msgstr "" #: templates/js/translated/forms.js:391 msgid "Update operation not allowed" -msgstr "Operazione di aggiornamento non consentita" +msgstr "" #: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" -msgstr "Operazione di eliminazione non consentita" +msgstr "" #: templates/js/translated/forms.js:419 msgid "View operation not allowed" -msgstr "Mostra operazione non consentita" +msgstr "" #: templates/js/translated/forms.js:796 msgid "Keep this form open" -msgstr "Mantieni aperto questo modulo" +msgstr "" #: templates/js/translated/forms.js:899 msgid "Enter a valid number" -msgstr "Inserisci un numero valido" +msgstr "" #: templates/js/translated/forms.js:1469 templates/modals.html:19 #: templates/modals.html:43 @@ -11384,35 +11655,35 @@ msgstr "Esistono errori nel modulo" #: templates/js/translated/forms.js:1967 msgid "No results found" -msgstr "Nessun risultato trovato" +msgstr "" #: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239 msgid "Searching" -msgstr "Ricerca" +msgstr "" #: templates/js/translated/forms.js:2485 msgid "Clear input" -msgstr "Cancella input" +msgstr "" #: templates/js/translated/forms.js:3071 msgid "File Column" -msgstr "Colonna File" +msgstr "" #: templates/js/translated/forms.js:3071 msgid "Field Name" -msgstr "Nome del campo" +msgstr "" #: templates/js/translated/forms.js:3083 msgid "Select Columns" -msgstr "Seleziona Colonne" +msgstr "" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "SÌ" +msgstr "" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "NO" +msgstr "" #: templates/js/translated/helpers.js:93 msgid "True" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11440,7 +11707,7 @@ msgstr "" #: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "Nessuna etichetta trovata" +msgstr "" #: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" @@ -11476,12 +11743,12 @@ msgstr "" #: templates/js/translated/label.js:187 msgid "Labels sent to printer" -msgstr "Etichette inviate alla stampante" +msgstr "" #: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 #: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "Annulla" +msgstr "" #: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 #: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 @@ -11491,81 +11758,81 @@ msgstr "Invia" #: templates/js/translated/modals.js:156 msgid "Form Title" -msgstr "Titolo modulo" +msgstr "" #: templates/js/translated/modals.js:445 msgid "Waiting for server..." -msgstr "In attesa del server..." +msgstr "" #: templates/js/translated/modals.js:596 msgid "Show Error Information" -msgstr "Informazioni sull'errore" +msgstr "" #: templates/js/translated/modals.js:682 msgid "Accept" -msgstr "Accetta" +msgstr "" #: templates/js/translated/modals.js:740 msgid "Loading Data" -msgstr "Caricamento Dati" +msgstr "" #: templates/js/translated/modals.js:1011 msgid "Invalid response from server" -msgstr "Risposta dal server non valida" +msgstr "" #: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" -msgstr "Dati del modulo mancanti dalla risposta server" +msgstr "" #: templates/js/translated/modals.js:1023 msgid "Error posting form data" -msgstr "Errore nel pubblicare i dati del modulo" +msgstr "" #: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" -msgstr "Dati del modulo mancanti di risposta JSON" +msgstr "" #: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" -msgstr "Errore 400: Richiesta Non Valida" +msgstr "" #: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" -msgstr "Il server ha restituito codice di errore 400" +msgstr "" #: templates/js/translated/modals.js:1159 msgid "Error requesting form data" -msgstr "Errore nella richiesta di dati modulo" +msgstr "" #: templates/js/translated/news.js:33 msgid "No news found" -msgstr "Nessuna notizia trovata" +msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 #: templates/js/translated/part.js:1604 msgid "ID" -msgstr "ID" +msgstr "" #: templates/js/translated/notification.js:52 msgid "Age" -msgstr "Età" +msgstr "" #: templates/js/translated/notification.js:65 msgid "Notification" -msgstr "Notifiche" +msgstr "" #: templates/js/translated/notification.js:224 msgid "Mark as unread" -msgstr "Segna come non letto" +msgstr "" #: templates/js/translated/notification.js:228 msgid "Mark as read" -msgstr "Segna come letto" +msgstr "" #: templates/js/translated/notification.js:254 msgid "No unread notifications" -msgstr "Nessuna notifica non letta" +msgstr "" #: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" @@ -11573,72 +11840,72 @@ msgstr "Le notifiche verranno caricate qui" #: templates/js/translated/order.js:89 msgid "Add Extra Line Item" -msgstr "Aggiungi Linea Extra" +msgstr "" #: templates/js/translated/order.js:126 msgid "Export Order" -msgstr "Esporta Ordine" +msgstr "" #: templates/js/translated/order.js:241 msgid "Duplicate Line" -msgstr "Duplica Linea" +msgstr "" #: templates/js/translated/order.js:255 msgid "Edit Line" -msgstr "Modifica Linea" +msgstr "" #: templates/js/translated/order.js:268 msgid "Delete Line" -msgstr "Cancella Linea" +msgstr "" #: templates/js/translated/order.js:281 #: templates/js/translated/purchase_order.js:1987 msgid "No line items found" -msgstr "Nessuna linea elementi trovata" +msgstr "" #: templates/js/translated/order.js:369 msgid "Duplicate line" -msgstr "Duplica linea" +msgstr "" #: templates/js/translated/order.js:370 msgid "Edit line" -msgstr "Modifica linea" +msgstr "" #: templates/js/translated/order.js:374 msgid "Delete line" -msgstr "Cancella linea" +msgstr "" #: templates/js/translated/part.js:90 msgid "Part Attributes" -msgstr "Attributi Articolo" +msgstr "" #: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "Opzioni Creazione Articolo" +msgstr "" #: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "Opzioni Duplicazione Articolo" +msgstr "" #: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "Aggiungi Categoria Articolo" +msgstr "" #: templates/js/translated/part.js:308 msgid "Parent part category" -msgstr "Categoria articolo principale" +msgstr "" #: templates/js/translated/part.js:332 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" -msgstr "Icona (opzionale) - Esplora tutte le icone disponibili su" +msgstr "" #: templates/js/translated/part.js:352 msgid "Create Part Category" -msgstr "Crea Categoria Articolo" +msgstr "" #: templates/js/translated/part.js:355 msgid "Create new category after this one" -msgstr "Crea una nuvoa categoria dopo questa" +msgstr "" #: templates/js/translated/part.js:356 msgid "Part category created" @@ -11646,229 +11913,233 @@ msgstr "" #: templates/js/translated/part.js:370 msgid "Edit Part Category" -msgstr "Modifica Categoria Articoli" +msgstr "" #: templates/js/translated/part.js:383 msgid "Are you sure you want to delete this part category?" -msgstr "Sei sicuro di voler eliminare questa categoria articolo?" +msgstr "" #: templates/js/translated/part.js:388 msgid "Move to parent category" -msgstr "Sposta nella categoria superiore" +msgstr "" #: templates/js/translated/part.js:397 msgid "Delete Part Category" -msgstr "Elimina categoria" +msgstr "" #: templates/js/translated/part.js:401 msgid "Action for parts in this category" -msgstr "Azione articoli in questa categoria" +msgstr "" #: templates/js/translated/part.js:406 msgid "Action for child categories" -msgstr "Azione per categorie secondarie" +msgstr "" #: templates/js/translated/part.js:430 msgid "Create Part" -msgstr "Crea Articolo" +msgstr "" #: templates/js/translated/part.js:432 msgid "Create another part after this one" -msgstr "Crea un altro articolo dopo questo" +msgstr "" #: templates/js/translated/part.js:433 msgid "Part created successfully" -msgstr "Articolo creato con successo" +msgstr "" #: templates/js/translated/part.js:461 msgid "Edit Part" -msgstr "Modifica l'articolo" +msgstr "" #: templates/js/translated/part.js:463 msgid "Part edited" -msgstr "Articolo modificato" +msgstr "" #: templates/js/translated/part.js:474 msgid "Create Part Variant" -msgstr "Crea Varianti Articolo" +msgstr "" #: templates/js/translated/part.js:531 msgid "Active Part" -msgstr "Articolo Attivo" +msgstr "" #: templates/js/translated/part.js:532 msgid "Part cannot be deleted as it is currently active" -msgstr "L'articolo non può essere eliminato poiché è attualmente attivo" +msgstr "" #: templates/js/translated/part.js:546 msgid "Deleting this part cannot be reversed" -msgstr "L'eliminazione di questo articolo non è reversibile" +msgstr "" #: templates/js/translated/part.js:548 msgid "Any stock items for this part will be deleted" -msgstr "Tutte le giacenze per questo articolo verranno eliminate" +msgstr "" #: templates/js/translated/part.js:549 msgid "This part will be removed from any Bills of Material" -msgstr "Questo articolo verrà eliminato da qualsiasi Fattura dei Materiali" +msgstr "" #: templates/js/translated/part.js:550 msgid "All manufacturer and supplier information for this part will be deleted" -msgstr "Tutte le informazioni del produttore e del fornitore per questo articolo verranno eliminate" +msgstr "" #: templates/js/translated/part.js:557 msgid "Delete Part" -msgstr "Cancella Articolo" +msgstr "" #: templates/js/translated/part.js:593 msgid "You are subscribed to notifications for this item" -msgstr "Sei iscritto alle notifiche per questo elemento" +msgstr "" #: templates/js/translated/part.js:595 msgid "You have subscribed to notifications for this item" -msgstr "Hai sottoscritto le notifiche per questo elemento" +msgstr "" #: templates/js/translated/part.js:600 msgid "Subscribe to notifications for this item" -msgstr "Sottoscrivi le notifiche per questo elemento" +msgstr "" #: templates/js/translated/part.js:602 msgid "You have unsubscribed to notifications for this item" -msgstr "Hai annullato l'iscrizione alle notifiche per questo elemento" +msgstr "" #: templates/js/translated/part.js:619 msgid "Validating the BOM will mark each line item as valid" -msgstr "La convalida della Distinta Base segnerà ogni voce di riga come valida" +msgstr "" #: templates/js/translated/part.js:629 msgid "Validate Bill of Materials" -msgstr "Convalida la distinta dei materiali" +msgstr "" #: templates/js/translated/part.js:632 msgid "Validated Bill of Materials" -msgstr "Valida Fattura dei Materiali" +msgstr "" #: templates/js/translated/part.js:657 msgid "Copy Bill of Materials" -msgstr "Copia Fattura dei Materiali" +msgstr "" #: templates/js/translated/part.js:685 #: templates/js/translated/table_filters.js:743 msgid "Low stock" -msgstr "In esaurimento" +msgstr "" #: templates/js/translated/part.js:688 msgid "No stock available" -msgstr "Nessuno stock disponibile" +msgstr "" #: templates/js/translated/part.js:748 msgid "Demand" -msgstr "Richieste" +msgstr "" #: templates/js/translated/part.js:771 msgid "Unit" -msgstr "Unità" +msgstr "" #: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 msgid "Virtual part" -msgstr "Parte virtuale" +msgstr "" #: templates/js/translated/part.js:806 msgid "Subscribed part" -msgstr "Parte sottoscritta" +msgstr "" #: templates/js/translated/part.js:810 msgid "Salable part" -msgstr "Parte vendibile" +msgstr "" #: templates/js/translated/part.js:889 msgid "Schedule generation of a new stocktake report." -msgstr "Programmare la generazione di un nuovo report inventario." +msgstr "" #: templates/js/translated/part.js:889 msgid "Once complete, the stocktake report will be available for download." -msgstr "Una volta completato, il report inventario sarà disponibile per il download." +msgstr "" #: templates/js/translated/part.js:897 msgid "Generate Stocktake Report" -msgstr "Genera Report Inventario" +msgstr "" #: templates/js/translated/part.js:901 msgid "Stocktake report scheduled" -msgstr "Programma report inventario" +msgstr "" #: templates/js/translated/part.js:1050 msgid "No stocktake information available" -msgstr "Nessuna informazione sull'inventario disponibile" +msgstr "" #: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 msgid "Edit Stocktake Entry" -msgstr "Modifica Voce Inventario" +msgstr "" #: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 msgid "Delete Stocktake Entry" -msgstr "Elimina Voce Inventario" +msgstr "" #: templates/js/translated/part.js:1281 msgid "No variants found" -msgstr "Nessuna variante trovata" +msgstr "" #: templates/js/translated/part.js:1599 msgid "No part parameter templates found" -msgstr "Nessun parametro dell'articolo templates trovato" +msgstr "" #: templates/js/translated/part.js:1662 msgid "Edit Part Parameter Template" -msgstr "Modifica Parametro Articolo Template" +msgstr "" #: templates/js/translated/part.js:1674 msgid "Any parameters which reference this template will also be deleted" -msgstr "Ogni parametro che fa riferimento a questo modello verrà eliminato" +msgstr "" #: templates/js/translated/part.js:1682 msgid "Delete Part Parameter Template" -msgstr "Elimina Parametro Articolo Template" +msgstr "" #: templates/js/translated/part.js:1716 #: templates/js/translated/purchase_order.js:1651 msgid "No purchase orders found" -msgstr "Nessun ordine d'acquisto trovato" +msgstr "" #: templates/js/translated/part.js:1860 #: templates/js/translated/purchase_order.js:2150 #: templates/js/translated/return_order.js:756 #: templates/js/translated/sales_order.js:1875 msgid "This line item is overdue" -msgstr "Questo elemento è in ritardo" +msgstr "" #: templates/js/translated/part.js:1906 #: templates/js/translated/purchase_order.js:2217 msgid "Receive line item" -msgstr "Ricevi linea elemento" +msgstr "" #: templates/js/translated/part.js:1969 msgid "Delete part relationship" -msgstr "Elimina relazione tra i componenti" +msgstr "" #: templates/js/translated/part.js:1991 msgid "Delete Part Relationship" -msgstr "Elimina Relazione Articolo" +msgstr "" #: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 msgid "No parts found" -msgstr "Nessun articolo trovato" +msgstr "" #: templates/js/translated/part.js:2200 msgid "Set the part category for the selected parts" -msgstr "Imposta la categoria prodotto per i prodotti selezionati" +msgstr "" #: templates/js/translated/part.js:2205 msgid "Set Part Category" -msgstr "Imposta categoria articolo" +msgstr "" #: templates/js/translated/part.js:2235 msgid "Set category" -msgstr "Imposta categoria" +msgstr "" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" #: templates/js/translated/part.js:2288 msgid "parts" @@ -11876,16 +12147,16 @@ msgstr "" #: templates/js/translated/part.js:2384 msgid "No category" -msgstr "Nessuna categoria" +msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2640 msgid "Display as list" -msgstr "Visualizza come elenco" +msgstr "" #: templates/js/translated/part.js:2547 msgid "Display as grid" -msgstr "Visualizza come griglia" +msgstr "" #: templates/js/translated/part.js:2645 msgid "No subcategories found" @@ -11893,72 +12164,72 @@ msgstr "" #: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "Visualizza come struttura ad albero" +msgstr "" #: templates/js/translated/part.js:2761 msgid "Load Subcategories" -msgstr "Carica Sotto Categorie" +msgstr "" #: templates/js/translated/part.js:2777 msgid "Subscribed category" -msgstr "Categoria sottoscritta" +msgstr "" #: templates/js/translated/part.js:2854 msgid "No test templates matching query" -msgstr "Nessun modello di test corrispondente" +msgstr "" #: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436 msgid "Edit test result" -msgstr "Modificare il risultato del test" +msgstr "" #: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437 #: templates/js/translated/stock.js:1699 msgid "Delete test result" -msgstr "Cancellare il risultato del test" +msgstr "" #: templates/js/translated/part.js:2910 msgid "This test is defined for a parent part" -msgstr "Questo test è definito per un articolo principale" +msgstr "" #: templates/js/translated/part.js:2926 msgid "Edit Test Result Template" -msgstr "Modifica Modello Risultato Test" +msgstr "" #: templates/js/translated/part.js:2940 msgid "Delete Test Result Template" -msgstr "Elimina Modello Risultato Test" +msgstr "" #: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020 msgid "No date specified" -msgstr "Nessuna data specificata" +msgstr "" #: templates/js/translated/part.js:3022 msgid "Specified date is in the past" -msgstr "La data specificata è nel passato" +msgstr "" #: templates/js/translated/part.js:3028 msgid "Speculative" -msgstr "Speculativo" +msgstr "" #: templates/js/translated/part.js:3078 msgid "No scheduling information available for this part" -msgstr "Nessuna informazione di pianificazione disponibile per questo prodotto" +msgstr "" #: templates/js/translated/part.js:3084 msgid "Error fetching scheduling information for this part" -msgstr "Errore nel recupero delle informazioni di programmazione per questo articolo" +msgstr "" #: templates/js/translated/part.js:3180 msgid "Scheduled Stock Quantities" -msgstr "Quantità Di Scorte Programmate" +msgstr "" #: templates/js/translated/part.js:3196 msgid "Maximum Quantity" -msgstr "Quantità Massima" +msgstr "" #: templates/js/translated/part.js:3241 msgid "Minimum Stock Level" -msgstr "Livello Minimo Stock" +msgstr "" #: templates/js/translated/plugin.js:46 msgid "No plugins found" @@ -11986,7 +12257,7 @@ msgstr "" #: templates/js/translated/plugin.js:158 msgid "The Plugin was installed" -msgstr "Il Plugin è stato installato" +msgstr "" #: templates/js/translated/plugin.js:177 msgid "Are you sure you want to enable this plugin?" @@ -12010,231 +12281,231 @@ msgstr "" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" -msgstr "Errore durante il recupero dati" +msgstr "" #: templates/js/translated/pricing.js:321 msgid "No BOM data available" -msgstr "Nessun dato Distinta Base disponibile" +msgstr "" #: templates/js/translated/pricing.js:463 msgid "No supplier pricing data available" -msgstr "Nessun dato di prezzo disponibile per il fornitore" +msgstr "" #: templates/js/translated/pricing.js:572 msgid "No price break data available" -msgstr "Nessun dato disponibile prezzo limite" +msgstr "" #: templates/js/translated/pricing.js:755 msgid "No purchase history data available" -msgstr "Nessun dato della cronologia di acquisto disponibile" +msgstr "" #: templates/js/translated/pricing.js:791 msgid "Purchase Price History" -msgstr "Cronologia Prezzi Acquisto" +msgstr "" #: templates/js/translated/pricing.js:894 msgid "No sales history data available" -msgstr "Nessun dato della cronologia di vendita disponibile" +msgstr "" #: templates/js/translated/pricing.js:916 msgid "Sale Price History" -msgstr "Cronologia Prezzo Vendita" +msgstr "" #: templates/js/translated/pricing.js:1005 msgid "No variant data available" -msgstr "Non sono disponibili dati varianti" +msgstr "" #: templates/js/translated/pricing.js:1045 msgid "Variant Part" -msgstr "Variante Articolo" +msgstr "" #: templates/js/translated/purchase_order.js:169 msgid "Select purchase order to duplicate" -msgstr "Selezione l'ordine di acquisto da duplicare" +msgstr "" #: templates/js/translated/purchase_order.js:176 msgid "Duplicate Line Items" -msgstr "Duplica linee degli elementi" +msgstr "" #: templates/js/translated/purchase_order.js:177 msgid "Duplicate all line items from the selected order" -msgstr "Duplica tutte le linee elementi dall'ordine selezionato" +msgstr "" #: templates/js/translated/purchase_order.js:184 msgid "Duplicate Extra Lines" -msgstr "Duplica Linee Extra" +msgstr "" #: templates/js/translated/purchase_order.js:185 msgid "Duplicate extra line items from the selected order" -msgstr "Duplica elementi linee extra dall'ordine selezionato" +msgstr "" #: templates/js/translated/purchase_order.js:206 msgid "Edit Purchase Order" -msgstr "Modifica ordine d'acquisto" +msgstr "" #: templates/js/translated/purchase_order.js:223 msgid "Duplication Options" -msgstr "Opzioni Duplicazione" +msgstr "" #: templates/js/translated/purchase_order.js:450 msgid "Complete Purchase Order" -msgstr "Completa Ordine D'Acquisto" +msgstr "" #: templates/js/translated/purchase_order.js:467 #: templates/js/translated/return_order.js:210 #: templates/js/translated/sales_order.js:500 msgid "Mark this order as complete?" -msgstr "Contrassegnare questo ordine come completato?" +msgstr "" #: templates/js/translated/purchase_order.js:473 msgid "All line items have been received" -msgstr "Tutti gli elementi della riga sono stati ricevuti" +msgstr "" #: templates/js/translated/purchase_order.js:478 msgid "This order has line items which have not been marked as received." -msgstr "Questo ordine ha elementi di riga che non sono stati contrassegnati come ricevuti." +msgstr "" #: templates/js/translated/purchase_order.js:479 #: templates/js/translated/sales_order.js:514 msgid "Completing this order means that the order and line items will no longer be editable." -msgstr "Completare questo ordine significa che l'ordine e gli elementi della riga non saranno più modificabili." +msgstr "" #: templates/js/translated/purchase_order.js:502 msgid "Cancel Purchase Order" -msgstr "Annulla Ordine di Acquisto" +msgstr "" #: templates/js/translated/purchase_order.js:507 msgid "Are you sure you wish to cancel this purchase order?" -msgstr "Sei sicuro di voler annullare questo ordine di acquisto?" +msgstr "" #: templates/js/translated/purchase_order.js:513 msgid "This purchase order can not be cancelled" -msgstr "Questo ordine d'acquisto non può essere cancellato" +msgstr "" #: templates/js/translated/purchase_order.js:534 #: templates/js/translated/return_order.js:164 msgid "After placing this order, line items will no longer be editable." -msgstr "Dopo aver effettuato questo ordine, gli elementi della riga non saranno più modificabili." +msgstr "" #: templates/js/translated/purchase_order.js:539 msgid "Issue Purchase Order" -msgstr "Problema Ordine di Acquisto" +msgstr "" #: templates/js/translated/purchase_order.js:631 msgid "At least one purchaseable part must be selected" -msgstr "Deve essere selezionata almeno un articolo acquistabile" +msgstr "" #: templates/js/translated/purchase_order.js:656 msgid "Quantity to order" -msgstr "Quantità da ordinare" +msgstr "" #: templates/js/translated/purchase_order.js:665 msgid "New supplier part" -msgstr "Nuovo articolo fornitore" +msgstr "" #: templates/js/translated/purchase_order.js:683 msgid "New purchase order" -msgstr "Nuovo ordine d'acquisto" +msgstr "" #: templates/js/translated/purchase_order.js:715 msgid "Add to purchase order" -msgstr "Aggiungi ordine d'acquisto" +msgstr "" #: templates/js/translated/purchase_order.js:863 msgid "No matching supplier parts" -msgstr "Nessun fornitore articolo corrispondente" +msgstr "" #: templates/js/translated/purchase_order.js:882 msgid "No matching purchase orders" -msgstr "Nessun ordine di acquisto corrispondente trovato" +msgstr "" #: templates/js/translated/purchase_order.js:1069 msgid "Select Line Items" -msgstr "Seleziona Linee Elementi" +msgstr "" #: templates/js/translated/purchase_order.js:1070 #: templates/js/translated/return_order.js:492 msgid "At least one line item must be selected" -msgstr "È necessario selezionare almeno una linea elemento" +msgstr "" #: templates/js/translated/purchase_order.js:1100 msgid "Received Quantity" -msgstr "Quantità Ricevuta" +msgstr "" #: templates/js/translated/purchase_order.js:1111 msgid "Quantity to receive" -msgstr "Quantità da ricevere" +msgstr "" #: templates/js/translated/purchase_order.js:1187 msgid "Stock Status" -msgstr "Stato giacenza" +msgstr "" #: templates/js/translated/purchase_order.js:1201 msgid "Add barcode" -msgstr "Aggiungi codice a barre" +msgstr "" #: templates/js/translated/purchase_order.js:1202 msgid "Remove barcode" -msgstr "Rimuovi il codice a barre" +msgstr "" #: templates/js/translated/purchase_order.js:1205 msgid "Specify location" -msgstr "Specifica la posizione" +msgstr "" #: templates/js/translated/purchase_order.js:1213 msgid "Add batch code" -msgstr "Aggiungi codice lotto" +msgstr "" #: templates/js/translated/purchase_order.js:1224 msgid "Add serial numbers" -msgstr "Aggiungi numeri seriali" +msgstr "" #: templates/js/translated/purchase_order.js:1276 msgid "Serials" -msgstr "Seriale" +msgstr "" #: templates/js/translated/purchase_order.js:1301 msgid "Order Code" -msgstr "Codice ordine" +msgstr "" #: templates/js/translated/purchase_order.js:1303 msgid "Quantity to Receive" -msgstr "Quantità da Ricevere" +msgstr "" #: templates/js/translated/purchase_order.js:1329 #: templates/js/translated/return_order.js:561 msgid "Confirm receipt of items" -msgstr "Conferma la ricezione degli elementi" +msgstr "" #: templates/js/translated/purchase_order.js:1330 msgid "Receive Purchase Order Items" -msgstr "Ricevi Elementi Ordine D'Acquisto" +msgstr "" #: templates/js/translated/purchase_order.js:1398 msgid "Scan Item Barcode" -msgstr "Scansiona codice a barre" +msgstr "" #: templates/js/translated/purchase_order.js:1399 msgid "Scan barcode on incoming item (must not match any existing stock items)" -msgstr "Scansiona il codice a barre sull'elemento in arrivo (non deve corrispondere a nessun articolo disponibile esistente)" +msgstr "" #: templates/js/translated/purchase_order.js:1413 msgid "Invalid barcode data" -msgstr "Dati codice a barre non validi" +msgstr "" #: templates/js/translated/purchase_order.js:1678 #: templates/js/translated/return_order.js:286 #: templates/js/translated/sales_order.js:774 #: templates/js/translated/sales_order.js:998 msgid "Order is overdue" -msgstr "L'Ordine è in ritardo" +msgstr "" #: templates/js/translated/purchase_order.js:1744 #: templates/js/translated/return_order.js:354 #: templates/js/translated/sales_order.js:851 #: templates/js/translated/sales_order.js:1011 msgid "Items" -msgstr "Elementi" +msgstr "" #: templates/js/translated/purchase_order.js:1840 msgid "All selected Line items will be deleted" @@ -12247,53 +12518,53 @@ msgstr "" #: templates/js/translated/purchase_order.js:1913 #: templates/js/translated/sales_order.js:2070 msgid "Duplicate Line Item" -msgstr "Duplica Linee Elementi" +msgstr "" #: templates/js/translated/purchase_order.js:1928 #: templates/js/translated/return_order.js:476 #: templates/js/translated/return_order.js:669 #: templates/js/translated/sales_order.js:2083 msgid "Edit Line Item" -msgstr "Modifica Linee Elementi" +msgstr "" #: templates/js/translated/purchase_order.js:1939 #: templates/js/translated/return_order.js:682 #: templates/js/translated/sales_order.js:2094 msgid "Delete Line Item" -msgstr "Cancella Linea Elemento" +msgstr "" #: templates/js/translated/purchase_order.js:2221 #: templates/js/translated/sales_order.js:2024 msgid "Duplicate line item" -msgstr "Duplica linea elemento" +msgstr "" #: templates/js/translated/purchase_order.js:2222 #: templates/js/translated/return_order.js:801 #: templates/js/translated/sales_order.js:2025 msgid "Edit line item" -msgstr "Modifica linea elemento" +msgstr "" #: templates/js/translated/purchase_order.js:2223 #: templates/js/translated/return_order.js:805 #: templates/js/translated/sales_order.js:2031 msgid "Delete line item" -msgstr "Cancella linea elemento" +msgstr "" #: templates/js/translated/report.js:63 msgid "items selected" -msgstr "elementi selezionati" +msgstr "" #: templates/js/translated/report.js:71 msgid "Select Report Template" -msgstr "Seleziona Modello Report" +msgstr "" #: templates/js/translated/report.js:86 msgid "Select Test Report Template" -msgstr "Seleziona Modello Test Report" +msgstr "" #: templates/js/translated/report.js:140 msgid "No Reports Found" -msgstr "Nessun Report Trovato" +msgstr "" #: templates/js/translated/report.js:141 msgid "No report templates found which match the selected items" @@ -12302,15 +12573,15 @@ msgstr "" #: templates/js/translated/return_order.js:60 #: templates/js/translated/sales_order.js:86 msgid "Add Customer" -msgstr "Aggiungi cliente" +msgstr "" #: templates/js/translated/return_order.js:134 msgid "Create Return Order" -msgstr "Crea Ordine Di Reso" +msgstr "" #: templates/js/translated/return_order.js:149 msgid "Edit Return Order" -msgstr "Modifica Ordine Di Reso" +msgstr "" #: templates/js/translated/return_order.js:169 msgid "Issue Return Order" @@ -12335,16 +12606,16 @@ msgstr "" #: templates/js/translated/return_order.js:300 #: templates/js/translated/sales_order.js:788 msgid "Invalid Customer" -msgstr "Cliente non valido" +msgstr "" #: templates/js/translated/return_order.js:562 msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" -msgstr "Nessun elemento di riga corrispondente" +msgstr "" #: templates/js/translated/return_order.js:798 msgid "Mark item as received" @@ -12352,47 +12623,47 @@ msgstr "" #: templates/js/translated/sales_order.js:161 msgid "Create Sales Order" -msgstr "Crea Ordine di Vendita" +msgstr "" #: templates/js/translated/sales_order.js:176 msgid "Edit Sales Order" -msgstr "Modifica Ordine di Vendita" +msgstr "" #: templates/js/translated/sales_order.js:291 msgid "No stock items have been allocated to this shipment" -msgstr "Nessun elemento di magazzino disponibile è stato assegnato a questa spedizione" +msgstr "" #: templates/js/translated/sales_order.js:296 msgid "The following stock items will be shipped" -msgstr "I seguenti elementi in magazzino saranno spediti" +msgstr "" #: templates/js/translated/sales_order.js:336 msgid "Complete Shipment" -msgstr "Completa Spedizione" +msgstr "" #: templates/js/translated/sales_order.js:360 msgid "Confirm Shipment" -msgstr "Conferma Spedizione" +msgstr "" #: templates/js/translated/sales_order.js:416 msgid "No pending shipments found" -msgstr "Nessuna spedizione in sospeso trovata" +msgstr "" #: templates/js/translated/sales_order.js:420 msgid "No stock items have been allocated to pending shipments" -msgstr "Nessun elemento di magazzino disponibile è stato assegnato a questa spedizione" +msgstr "" #: templates/js/translated/sales_order.js:430 msgid "Complete Shipments" -msgstr "Spedizioni Completate" +msgstr "" #: templates/js/translated/sales_order.js:452 msgid "Skip" -msgstr "Salta" +msgstr "" #: templates/js/translated/sales_order.js:513 msgid "This order has line items which have not been completed." -msgstr "Questo ordine ha elementi di riga che non sono stati completati." +msgstr "" #: templates/js/translated/sales_order.js:535 msgid "Issue this Sales Order?" @@ -12404,132 +12675,132 @@ msgstr "" #: templates/js/translated/sales_order.js:559 msgid "Cancel Sales Order" -msgstr "Annulla Ordine di Vendita" +msgstr "" #: templates/js/translated/sales_order.js:564 msgid "Cancelling this order means that the order will no longer be editable." -msgstr "Cancellando questo ordine, l'ordine non sarà più modificabile." +msgstr "" #: templates/js/translated/sales_order.js:618 msgid "Create New Shipment" -msgstr "Crea Nuova Spedizione" +msgstr "" #: templates/js/translated/sales_order.js:728 msgid "No sales orders found" -msgstr "Non sono state trovati ordini di vendita" +msgstr "" #: templates/js/translated/sales_order.js:908 msgid "Edit shipment" -msgstr "Modifica spedizione" +msgstr "" #: templates/js/translated/sales_order.js:911 msgid "Complete shipment" -msgstr "Completa spedizione" +msgstr "" #: templates/js/translated/sales_order.js:916 msgid "Delete shipment" -msgstr "Elimina spedizione" +msgstr "" #: templates/js/translated/sales_order.js:933 msgid "Edit Shipment" -msgstr "Modifica spedizione" +msgstr "" #: templates/js/translated/sales_order.js:948 msgid "Delete Shipment" -msgstr "Elimina Spedizione" +msgstr "" #: templates/js/translated/sales_order.js:981 msgid "No matching shipments found" -msgstr "Nessuna spedizione corrispondente trovata" +msgstr "" #: templates/js/translated/sales_order.js:1006 msgid "Shipment Reference" -msgstr "Riferimento della spedizione" +msgstr "" #: templates/js/translated/sales_order.js:1030 #: templates/js/translated/sales_order.js:1529 msgid "Not shipped" -msgstr "Non spedito" +msgstr "" #: templates/js/translated/sales_order.js:1048 msgid "Tracking" -msgstr "Tracciamento" +msgstr "" #: templates/js/translated/sales_order.js:1052 msgid "Invoice" -msgstr "Fattura" +msgstr "" #: templates/js/translated/sales_order.js:1219 msgid "Add Shipment" -msgstr "Aggiungi Spedizione" +msgstr "" #: templates/js/translated/sales_order.js:1270 msgid "Confirm stock allocation" -msgstr "Conferma l'assegnazione della giacenza" +msgstr "" #: templates/js/translated/sales_order.js:1271 msgid "Allocate Stock Items to Sales Order" -msgstr "Assegna Elementi di Magazzino all'Ordine di Vendita" +msgstr "" #: templates/js/translated/sales_order.js:1477 msgid "No sales order allocations found" -msgstr "Nessun ordine di vendita trovato" +msgstr "" #: templates/js/translated/sales_order.js:1569 msgid "Edit Stock Allocation" -msgstr "Modifica posizione giacenza" +msgstr "" #: templates/js/translated/sales_order.js:1583 msgid "Confirm Delete Operation" -msgstr "Conferma Operazione Eliminazione" +msgstr "" #: templates/js/translated/sales_order.js:1584 msgid "Delete Stock Allocation" -msgstr "Elimina posizione giacenza" +msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 #: templates/js/translated/stock.js:1744 msgid "Shipped to customer" -msgstr "Spedito al cliente" +msgstr "" #: templates/js/translated/sales_order.js:1631 #: templates/js/translated/sales_order.js:1719 msgid "Stock location not specified" -msgstr "Nessun posizione specificata" +msgstr "" #: templates/js/translated/sales_order.js:2008 msgid "Allocate serial numbers" -msgstr "Assegna Numeri di Serie" +msgstr "" #: templates/js/translated/sales_order.js:2012 msgid "Purchase stock" -msgstr "Prezzo d'acquisto" +msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" -msgstr "Calcola il prezzo" +msgstr "" #: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been shipped" -msgstr "Non può essere eliminato perché gli elementi sono stati spediti" +msgstr "" #: templates/js/translated/sales_order.js:2038 msgid "Cannot be deleted as items have been allocated" -msgstr "Non può essere eliminato perché gli elementi sono stati assegnati" +msgstr "" #: templates/js/translated/sales_order.js:2109 msgid "Allocate Serial Numbers" -msgstr "Assegna Numeri di Serie" +msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" -msgstr "Aggiorna Prezzo Unitario" +msgstr "" #: templates/js/translated/search.js:270 msgid "No results" -msgstr "Nessun risultato" +msgstr "" #: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" @@ -12537,27 +12808,27 @@ msgstr "" #: templates/js/translated/search.js:342 msgid "result" -msgstr "risultato" +msgstr "" #: templates/js/translated/search.js:342 msgid "results" -msgstr "risultati" +msgstr "" #: templates/js/translated/search.js:352 msgid "Minimize results" -msgstr "Minimizza risultati" +msgstr "" #: templates/js/translated/search.js:355 msgid "Remove results" -msgstr "Rimuovi risultati" +msgstr "" #: templates/js/translated/stock.js:98 msgid "Serialize Stock Item" -msgstr "Serializza Elementi di Magazzino" +msgstr "" #: templates/js/translated/stock.js:129 msgid "Confirm Stock Serialization" -msgstr "Conferma Serializzazione Magazzino" +msgstr "" #: templates/js/translated/stock.js:139 msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" @@ -12565,7 +12836,7 @@ msgstr "" #: templates/js/translated/stock.js:152 msgid "Parent stock location" -msgstr "Posizione giacenza principale" +msgstr "" #: templates/js/translated/stock.js:166 msgid "Add Location type" @@ -12573,43 +12844,43 @@ msgstr "" #: templates/js/translated/stock.js:202 msgid "Edit Stock Location" -msgstr "Modifica Posizione Giacenza" +msgstr "" #: templates/js/translated/stock.js:217 msgid "New Stock Location" -msgstr "Nuova posizione giacenza" +msgstr "" #: templates/js/translated/stock.js:219 msgid "Create another location after this one" -msgstr "Crea un'altra posizione dopo questa" +msgstr "" #: templates/js/translated/stock.js:220 msgid "Stock location created" -msgstr "Posizione magazzino creata" +msgstr "" #: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" -msgstr "Sei sicuro di voler eliminare questa posizione?" +msgstr "" #: templates/js/translated/stock.js:241 msgid "Move to parent stock location" -msgstr "Sposta nella posizione principale magazzino" +msgstr "" #: templates/js/translated/stock.js:250 msgid "Delete Stock Location" -msgstr "Elimina Posizione di Giacenza" +msgstr "" #: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" -msgstr "Azione per gli elementi stock in questa posizione magazzino" +msgstr "" #: templates/js/translated/stock.js:259 msgid "Action for sub-locations" -msgstr "Azione per sotto-ubicazioni" +msgstr "" #: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" -msgstr "Questo articolo non può essere serializzato" +msgstr "" #: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" @@ -12617,143 +12888,143 @@ msgstr "" #: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" -msgstr "Inserisci quantità iniziale per questo articolo in giacenza" +msgstr "" #: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "Inserire i numeri di serie per la nuova giacenza (o lasciare vuoto)" +msgstr "" #: templates/js/translated/stock.js:439 msgid "Stock item duplicated" -msgstr "Elemento di magazzino duplicato" +msgstr "" #: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" -msgstr "Duplica elemento di magazzino" +msgstr "" #: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" -msgstr "Sei sicuro di voler rimuovere questo elemento di magazzino?" +msgstr "" #: templates/js/translated/stock.js:480 msgid "Delete Stock Item" -msgstr "Cancella Elemento di Magazzino" +msgstr "" #: templates/js/translated/stock.js:501 msgid "Edit Stock Item" -msgstr "Modifica elemento magazzino" +msgstr "" #: templates/js/translated/stock.js:543 msgid "Create another item after this one" -msgstr "Crea un altro oggetto dopo questo" +msgstr "" #: templates/js/translated/stock.js:555 msgid "Created new stock item" -msgstr "Crea nuova allocazione magazzino" +msgstr "" #: templates/js/translated/stock.js:568 msgid "Created multiple stock items" -msgstr "Creato più elementi stock" +msgstr "" #: templates/js/translated/stock.js:593 msgid "Find Serial Number" -msgstr "Trova Numero Di Serie" +msgstr "" #: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "Inserisci numero di serie" +msgstr "" #: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "Inserisci un numero di serie" +msgstr "" #: templates/js/translated/stock.js:634 msgid "No matching serial number" -msgstr "Nessun numero di serie corrispondente" +msgstr "" #: templates/js/translated/stock.js:643 msgid "More than one matching result found" -msgstr "Trovati più di un risultato corrispondente" +msgstr "" #: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" -msgstr "Conferma l'assegnazione delle scorte" +msgstr "" #: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" -msgstr "Assegnare la scorta al cliente" +msgstr "" #: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" -msgstr "Attenzione: L'operazione di unione non può essere annullata" +msgstr "" #: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" -msgstr "Alcune informazioni andranno perse durante la fusione degli articoli di magazzino" +msgstr "" #: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" -msgstr "La cronologia delle transazioni di magazzino verrà eliminata per gli articoli uniti" +msgstr "" #: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" -msgstr "Le informazioni sulle parti del fornitore verranno eliminate per gli articoli uniti" +msgstr "" #: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" -msgstr "Confermare l'unione degli articoli di magazzino" +msgstr "" #: templates/js/translated/stock.js:929 msgid "Merge Stock Items" -msgstr "Unire gli articoli di magazzino" +msgstr "" #: templates/js/translated/stock.js:1024 msgid "Transfer Stock" -msgstr "Trasferisci giacenza" +msgstr "" #: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "Sposta" +msgstr "" #: templates/js/translated/stock.js:1031 msgid "Count Stock" -msgstr "Conta giacenza" +msgstr "" #: templates/js/translated/stock.js:1032 msgid "Count" -msgstr "Conta" +msgstr "" #: templates/js/translated/stock.js:1036 msgid "Remove Stock" -msgstr "Rimuovi giacenza" +msgstr "" #: templates/js/translated/stock.js:1037 msgid "Take" -msgstr "Prendi" +msgstr "" #: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "Aggiungi giacenza" +msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "Aggiungi" #: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "Elimina Stock" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" -msgstr "La quantità non può essere regolata per le scorte serializzate" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" -msgstr "Specificare la quantità di magazzino" +msgstr "" #: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" -msgstr "Seleziona Elementi Magazzino" +msgstr "" #: templates/js/translated/stock.js:1178 msgid "Select at least one available stock item" @@ -12761,59 +13032,59 @@ msgstr "" #: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" -msgstr "Confermare l'adeguamento delle scorte" +msgstr "" #: templates/js/translated/stock.js:1360 msgid "PASS" -msgstr "OK" +msgstr "" #: templates/js/translated/stock.js:1362 msgid "FAIL" -msgstr "FALLITO" +msgstr "" #: templates/js/translated/stock.js:1367 msgid "NO RESULT" -msgstr "NESSUN RISULTATO" +msgstr "" #: templates/js/translated/stock.js:1429 msgid "Pass test" -msgstr "Test OK" +msgstr "" #: templates/js/translated/stock.js:1432 msgid "Add test result" -msgstr "Aggiungi risultato test" +msgstr "" #: templates/js/translated/stock.js:1456 msgid "No test results found" -msgstr "Nessun risultato di prova trovato" +msgstr "" #: templates/js/translated/stock.js:1520 msgid "Test Date" -msgstr "Data del test" +msgstr "" #: templates/js/translated/stock.js:1682 msgid "Edit Test Result" -msgstr "Modifica del risultato del test" +msgstr "" #: templates/js/translated/stock.js:1704 msgid "Delete Test Result" -msgstr "Cancellare il risultato del test" +msgstr "" #: templates/js/translated/stock.js:1736 msgid "In production" -msgstr "In produzione" +msgstr "" #: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" -msgstr "Installato nell'elemento stock" +msgstr "" #: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" -msgstr "Assegnato all'ordine di vendita" +msgstr "" #: templates/js/translated/stock.js:1754 msgid "No stock location set" -msgstr "Nessuna giacenza impostata" +msgstr "" #: templates/js/translated/stock.js:1810 msgid "Change stock status" @@ -12821,11 +13092,11 @@ msgstr "" #: templates/js/translated/stock.js:1819 msgid "Merge stock" -msgstr "Unisce la giacenza" +msgstr "" #: templates/js/translated/stock.js:1868 msgid "Delete stock" -msgstr "Elimina Stock" +msgstr "" #: templates/js/translated/stock.js:1923 msgid "stock items" @@ -12845,31 +13116,31 @@ msgstr "" #: templates/js/translated/stock.js:2061 msgid "Stock item is in production" -msgstr "L'articolo di magazzino è in produzione" +msgstr "" #: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" -msgstr "Articolo di magazzino assegnato all'ordine di vendita" +msgstr "" #: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" -msgstr "Articolo stock assegnato al cliente" +msgstr "" #: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" -msgstr "L'articolo di magazzino serializzato è stato assegnato" +msgstr "" #: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" -msgstr "La voce di magazzino è stata completamente assegnata" +msgstr "" #: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" -msgstr "La voce di magazzino è stata parzialmente allocata" +msgstr "" #: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" -msgstr "L'elemento stock è stato installato in un altro articolo" +msgstr "" #: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" @@ -12877,40 +13148,40 @@ msgstr "" #: templates/js/translated/stock.js:2085 msgid "Stock item has expired" -msgstr "L'articolo stock è scaduto" +msgstr "" #: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" -msgstr "Articolo in giacenza prossimo alla scadenza" +msgstr "" #: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" -msgstr "L'articolo stock è stato rifiutato" +msgstr "" #: templates/js/translated/stock.js:2094 msgid "Stock item is lost" -msgstr "L'articolo di magazzino è andato perso" +msgstr "" #: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" -msgstr "Articolo di magazzino distrutto" +msgstr "" #: templates/js/translated/stock.js:2100 #: templates/js/translated/table_filters.js:350 msgid "Depleted" -msgstr "Esaurito" +msgstr "" #: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" -msgstr "Fornitore dell'articolo non specificato" +msgstr "" #: templates/js/translated/stock.js:2312 msgid "Stock Value" -msgstr "Valore Scorte" +msgstr "" #: templates/js/translated/stock.js:2440 msgid "No stock items matching query" -msgstr "Nessun articolo in magazzino corrispondente alla richiesta" +msgstr "" #: templates/js/translated/stock.js:2544 msgid "stock locations" @@ -12922,7 +13193,7 @@ msgstr "" #: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "Dettagli" +msgstr "" #: templates/js/translated/stock.js:2821 msgid "No changes" @@ -12930,11 +13201,11 @@ msgstr "" #: templates/js/translated/stock.js:2833 msgid "Part information unavailable" -msgstr "Informazioni sull'articolo non disponibili" +msgstr "" #: templates/js/translated/stock.js:2855 msgid "Location no longer exists" -msgstr "La posizione non esiste più" +msgstr "" #: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" @@ -12942,71 +13213,71 @@ msgstr "" #: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" -msgstr "L'ordine di acquisto non esiste più" +msgstr "" #: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" -msgstr "L'ordine di vendita non esiste più" +msgstr "" #: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" -msgstr "L'ordine di ritorno non esiste più" +msgstr "" #: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" -msgstr "Il cliente non esiste più" +msgstr "" #: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" -msgstr "L'articolo in magazzino non esiste più" +msgstr "" #: templates/js/translated/stock.js:2976 msgid "Added" -msgstr "Aggiunto" +msgstr "" #: templates/js/translated/stock.js:2984 msgid "Removed" -msgstr "Rimosso" +msgstr "" #: templates/js/translated/stock.js:3056 msgid "No installed items" -msgstr "Nessun elemento installato" +msgstr "" #: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" -msgstr "Disinstallare l'articolo di magazzino" +msgstr "" #: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" -msgstr "Selezionare l'articolo di magazzino da disinstallare" +msgstr "" #: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" -msgstr "Installare un altro articolo di magazzino in questo articolo" +msgstr "" #: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" -msgstr "Gli articoli in magazzino possono essere installati solo se soddisfano i seguenti criteri" +msgstr "" #: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" -msgstr "L'articolo di magazzino si collega a un'articolo che è la distinta base di questo articolo di magazzino" +msgstr "" #: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" -msgstr "L'articolo in stock è attualmente disponibile in magazzino" +msgstr "" #: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" -msgstr "L'articolo di magazzino non è già installato in un altro articolo" +msgstr "" #: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" -msgstr "L'articolo di magazzino è tracciato da un codice di lotto o da un numero di serie" +msgstr "" #: templates/js/translated/stock.js:3205 msgid "Select part to install" -msgstr "Selezionare la parte da installare" +msgstr "" #: templates/js/translated/stock.js:3268 msgid "Select one or more stock items" @@ -13022,58 +13293,58 @@ msgstr "" #: templates/js/translated/table_filters.js:74 msgid "Has project code" -msgstr "Ha il codice del progetto" +msgstr "" #: templates/js/translated/table_filters.js:89 #: templates/js/translated/table_filters.js:601 #: templates/js/translated/table_filters.js:613 #: templates/js/translated/table_filters.js:654 msgid "Order status" -msgstr "Stato dell'ordine" +msgstr "" #: templates/js/translated/table_filters.js:94 #: templates/js/translated/table_filters.js:618 #: templates/js/translated/table_filters.js:644 #: templates/js/translated/table_filters.js:659 msgid "Outstanding" -msgstr "In Sospeso" +msgstr "" #: templates/js/translated/table_filters.js:102 #: templates/js/translated/table_filters.js:524 #: templates/js/translated/table_filters.js:626 #: templates/js/translated/table_filters.js:667 msgid "Assigned to me" -msgstr "Assegnato a me" +msgstr "" #: templates/js/translated/table_filters.js:158 msgid "Trackable Part" -msgstr "Articolo tracciabile" +msgstr "" #: templates/js/translated/table_filters.js:162 msgid "Assembled Part" -msgstr "Articolo assemblato" +msgstr "" #: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" -msgstr "Ha scorte disponibili" +msgstr "" #: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" -msgstr "Varianti consentite" +msgstr "" #: templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:775 msgid "Has Pricing" -msgstr "Prezzo" +msgstr "" #: templates/js/translated/table_filters.js:234 #: templates/js/translated/table_filters.js:345 msgid "Include sublocations" -msgstr "Includi sottoallocazioni/posizioni" +msgstr "" #: templates/js/translated/table_filters.js:235 msgid "Include locations" -msgstr "Includi posizioni" +msgstr "" #: templates/js/translated/table_filters.js:267 msgid "Has location type" @@ -13083,171 +13354,167 @@ msgstr "" #: templates/js/translated/table_filters.js:279 #: templates/js/translated/table_filters.js:707 msgid "Include subcategories" -msgstr "Includi sottocategorie" +msgstr "" #: templates/js/translated/table_filters.js:287 #: templates/js/translated/table_filters.js:755 msgid "Subscribed" -msgstr "Sottoscritto" +msgstr "" #: templates/js/translated/table_filters.js:298 #: templates/js/translated/table_filters.js:380 msgid "Is Serialized" -msgstr "E' Serializzato" +msgstr "" #: templates/js/translated/table_filters.js:301 #: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" -msgstr "Numero di serie GTE" +msgstr "" #: templates/js/translated/table_filters.js:302 #: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" -msgstr "Numero di serie maggiore di o uguale a" +msgstr "" #: templates/js/translated/table_filters.js:305 #: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" -msgstr "Numero di serie LTE" +msgstr "" #: templates/js/translated/table_filters.js:306 #: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" -msgstr "Numero di serie inferiore di o uguale a" +msgstr "" #: templates/js/translated/table_filters.js:309 #: templates/js/translated/table_filters.js:310 #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "Numero di serie" +msgstr "" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 msgid "Batch code" -msgstr "Codice Lotto" +msgstr "" #: templates/js/translated/table_filters.js:325 #: templates/js/translated/table_filters.js:696 msgid "Active parts" -msgstr "Elementi attivi" +msgstr "" #: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" -msgstr "Mostra stock per gli articoli attivi" +msgstr "" #: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" -msgstr "L'articolo è un assemblato" +msgstr "" #: templates/js/translated/table_filters.js:335 msgid "Is allocated" -msgstr "È assegnato" +msgstr "" #: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" -msgstr "L'elemento è stato posizionato" +msgstr "" #: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" -msgstr "Stock disponibile per l'utilizzo" +msgstr "" #: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" -msgstr "Includi elementi in giacenza nelle sottoallocazioni" +msgstr "" #: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" -msgstr "Mostra gli elementi di magazzino che sono esauriti" +msgstr "" #: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" -msgstr "Mostra gli elementi che sono in giacenza" - -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "In Produzione" +msgstr "" #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" -msgstr "Mostra gli elementi in produzione" +msgstr "" #: templates/js/translated/table_filters.js:365 msgid "Include Variants" -msgstr "Includi Varianti" +msgstr "" #: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" -msgstr "Includi gli articoli stock per le varianti degli articoli" +msgstr "" #: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" -msgstr "Mostra gli elementi stock che sono installati in un altro elemento" +msgstr "" #: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" -msgstr "Mostra elementi che sono stati assegnati a un cliente" +msgstr "" #: templates/js/translated/table_filters.js:396 #: templates/js/translated/table_filters.js:397 msgid "Stock status" -msgstr "Stato magazzino" +msgstr "" #: templates/js/translated/table_filters.js:400 msgid "Has batch code" -msgstr "Ha codice lotto" +msgstr "" #: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" -msgstr "L'articolo stock è monitorato dal codice lotto o dal numero di serie" +msgstr "" #: templates/js/translated/table_filters.js:414 msgid "Has purchase price" -msgstr "Ha il prezzo d'acquisto" +msgstr "" #: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" -msgstr "Mostra gli articoli di magazzino che hanno un prezzo di acquisto impostato" +msgstr "" #: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" -msgstr "Data di scadenza precedente" +msgstr "" #: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" -msgstr "Data di scadenza successiva" +msgstr "" #: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" -msgstr "Mostra gli elementi in giacenza scaduti" +msgstr "" #: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" -msgstr "Mostra giacenza prossima alla scadenza" +msgstr "" #: templates/js/translated/table_filters.js:456 msgid "Test Passed" -msgstr "Test superato" +msgstr "" #: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" -msgstr "Includi Elementi Installati" +msgstr "" #: templates/js/translated/table_filters.js:511 msgid "Build status" -msgstr "Stato Build" +msgstr "" #: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" -msgstr "Includi articoli nelle sottocategorie" +msgstr "" #: templates/js/translated/table_filters.js:713 msgid "Show active parts" -msgstr "Visualizza articoli attivi" +msgstr "" #: templates/js/translated/table_filters.js:721 msgid "Available stock" -msgstr "Stock disponibile" +msgstr "" #: templates/js/translated/table_filters.js:729 #: templates/js/translated/table_filters.js:825 @@ -13260,23 +13527,23 @@ msgstr "" #: templates/js/translated/table_filters.js:734 msgid "Has IPN" -msgstr "Ha IPN" +msgstr "" #: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" -msgstr "L'articolo possiede un part number interno" +msgstr "" #: templates/js/translated/table_filters.js:739 msgid "In stock" -msgstr "In giacenza" +msgstr "" #: templates/js/translated/table_filters.js:747 msgid "Purchasable" -msgstr "Acquistabile" +msgstr "" #: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" -msgstr "Ha voci d'inventario" +msgstr "" #: templates/js/translated/table_filters.js:821 msgid "Has Choices" @@ -13284,79 +13551,79 @@ msgstr "" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "Visualizzazione calendario" +msgstr "" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "Visualizzazione elenco" +msgstr "" #: templates/js/translated/tables.js:112 msgid "Display tree view" -msgstr "Visualizza vista albero" +msgstr "" #: templates/js/translated/tables.js:130 msgid "Expand all rows" -msgstr "Espandi tutte le righe" +msgstr "" #: templates/js/translated/tables.js:136 msgid "Collapse all rows" -msgstr "Comprimi tutte le righe" +msgstr "" #: templates/js/translated/tables.js:186 msgid "Export Table Data" -msgstr "Esporta Dati Tabella" +msgstr "" #: templates/js/translated/tables.js:190 msgid "Select File Format" -msgstr "Seleziona Formato File" +msgstr "" #: templates/js/translated/tables.js:529 msgid "Loading data" -msgstr "Caricamento dati" +msgstr "" #: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "righe per pagina" +msgstr "" #: templates/js/translated/tables.js:537 msgid "Showing all rows" -msgstr "Mostra tutte le righe" +msgstr "" #: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "Visualizzo" +msgstr "" #: templates/js/translated/tables.js:539 msgid "to" -msgstr "a" +msgstr "" #: templates/js/translated/tables.js:539 msgid "of" -msgstr "di" +msgstr "" #: templates/js/translated/tables.js:539 msgid "rows" -msgstr "righe" +msgstr "" #: templates/js/translated/tables.js:546 msgid "No matching results" -msgstr "Nessun risultato corrispondente" +msgstr "" #: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" -msgstr "Mostra/nascondi la paginazione" +msgstr "" #: templates/js/translated/tables.js:555 msgid "Toggle" -msgstr "Attiva/disattiva" +msgstr "" #: templates/js/translated/tables.js:558 msgid "Columns" -msgstr "Colonne" +msgstr "" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "Tutti" +msgstr "" #: templates/navbar.html:45 msgid "Buy" @@ -13462,12 +13729,16 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" -msgstr "Stai per utilizzare il tuo account %(provider_name)s per accedere a\n" -"%(site_name)s.
Per concludere, compila il seguente modulo:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" +msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 msgid "Provider has not been configured" @@ -13545,27 +13816,27 @@ msgstr "Si" msgid "No" msgstr "No" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "Utenti" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "Selezionare quali utenti sono assegnati a questo gruppo" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "Informazioni personali" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "Permessi" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "Date Importanti" @@ -13609,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "Impostazione autorizzazioni" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "Gruppo" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "Visualizza" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "Autorizzazione a visualizzare gli articoli" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "Autorizzazione ad aggiungere elementi" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "Modificare" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Permessi per modificare gli elementi" -#: users/models.py:401 +#: users/models.py:413 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 e7a6bf9969..a54c926820 100644 --- a/InvenTree/locale/ja/LC_MESSAGES/django.po +++ b/InvenTree/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:42\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "APIエンドポイントが見つかりません" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "ユーザーにこのモデルを表示する権限がありません" @@ -43,7 +43,7 @@ msgstr "" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "エラーの詳細は管理者パネルで確認できます" @@ -51,18 +51,18 @@ msgstr "エラーの詳細は管理者パネルで確認できます" msgid "Enter date" msgstr "日付を入力する" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "指定されたプライマリEメールアドレスは無効です。" msgid "The provided email domain is not approved." msgstr "指定されたメールドメインは承認されていません。" -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "数量コードが無効です" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "シリアル番号は空です" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "シリアル番号が見つかりません" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "この値からHTMLタグを削除" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "接続エラー" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "サーバは無効なステータスコードで応答しました" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "例外が発生しました" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "サーバーが無効なContent-Length値で応答しました" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "画像サイズが大きすぎます" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "画像のダウンロードが最大サイズを超えました" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "リモートサーバーが空のレスポンスを返しました" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "指定されたURLは有効な画像ファイルではありません" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "チェコ語" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "ドイツ語" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "ギリシャ語" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "英語" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "スペイン語" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "スペイン語(メキシコ)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "フランス語" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "ヘブライ語" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "ヒンディー語" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "ハンガリー語" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "イタリア語" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "日本語" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "韓国語" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "オランダ語" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "ノルウェー語" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "ポーランド語" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "ポルトガル語" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "ポルトガル語 (ブラジル)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "ロシア語" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "スロベニア語" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "スウェーデン語" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "タイ語" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "トルコ語" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "ベトナム語" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "メールアドレス" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "プラグインメタデータ" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "外部プラグインで使用するためのJSONメタデータフィールド" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "ファイルがありません" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "外部リンクが見つかりません。" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "添付ファイル" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "添付ファイルを選択" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "添付ファイルを選択" msgid "Link" msgstr "リンク" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "外部 サイト へのリンク" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "コメント:" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "ファイルコメント" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "ユーザー" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "アップロード日時" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "ファイル名は空欄にできません" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "添付ファイルのディレクトリが正しくありません" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "ファイル名に無効な文字'{c}'が含まれています" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "ファイル名に拡張子がありません" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "この名前の貼付ファイルは既に存在します" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "ファイル名の変更に失敗しました" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "無効な選択です" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "無効な選択です" msgid "Name" msgstr "お名前" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "お名前" msgid "Description" msgstr "説明" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "説明 (オプション)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "親" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "マークダウンメモ (オプション)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "バーコード情報" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "サードパーティ製バーコードデータ" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "有効な数字でなければなりません" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "ファイル名" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "無効な値です。" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "データファイル" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "アップロードするファイルを選択" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "サポートされていないファイル形式" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "ファイルサイズが大きすぎます" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "ファイルに列が見つかりません" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "ファイルにデータ行がみつかりません" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "データが入力されていません" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "データ列が指定されていません" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "必須の列がありません: {name}" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "{col} 列が重複しています。" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "外部画像ファイルのURL" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "外部URLからの画像ダウンロードは許可されていません" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "チェコ語" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "ドイツ語" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "ギリシャ語" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "英語" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "スペイン語" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "スペイン語(メキシコ)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "フランス語" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "ヘブライ語" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "ヒンディー語" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "ハンガリー語" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "イタリア語" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "日本語" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "韓国語" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "オランダ語" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "ノルウェー語" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "ポーランド語" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "ポルトガル語" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "ポルトガル語 (ブラジル)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "ロシア語" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "スロベニア語" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "スウェーデン語" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "タイ語" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "トルコ語" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "ベトナム語" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "バックグラウンドワーカーのチェックに失敗しました" @@ -712,7 +722,7 @@ msgstr "返品済" msgid "In Progress" msgstr "処理中" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "InvenTree について" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "オプション" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "組立注文" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "組立注文" msgid "Build Orders" msgstr "組立注文" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "" msgid "Part" msgstr "パーツ" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "組立状況" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "作成日時" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "外部リンク" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "組立優先度" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "数量" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "在庫商品" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "シリアル番号" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "ステータス" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "組立ライン" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1985,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "外部URLからの画像ダウンロードを許可する" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "外部URL画像の最大サイズ" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "テンプレート" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "パーツはデフォルトのテンプレートです" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "アセンブリ" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "コンポーネント" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "パーツはデフォルトでサブコンポーネントとして使用できます" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "購入可能" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "パーツはデフォルトで購入可能です" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "販売可能" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "パーツはデフォルトで販売可能です" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "追跡可能" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "パーツはデフォルトで追跡可能です" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "デバッグモード" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "シリアル番号を自動入力" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "メールアドレスは必須です" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "非アクティブな部品を非表示" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "購読中の部品を表示" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "購読中のカテゴリを表示" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "メッセージ ID:" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "連絡先メールアドレス" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "製造元" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "メーカー・パーツ" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "仕入先" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "顧客" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "外部ページへのリンク" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "購入金額" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "割り当てるシリアル番号を入力" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "キーワード" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "パーツカテゴリ" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "パーツカテゴリ" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "カテゴリ" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "パーツカテゴリ" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "アクションが指定されていません" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "一致するアクションが見つかりませんでした" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "シリアル番号が既に存在します" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "シリアル番号が大きすぎます" @@ -8558,157 +8830,161 @@ msgstr "シリアル番号が大きすぎます" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "パーツは販売可能でなければなりません" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "組立" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9142,11 +9418,11 @@ msgstr "" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "購読中のパーツ" +msgstr "" #: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "購読中のカテゴリ" +msgstr "" #: templates/InvenTree/index.html:62 msgid "Latest Parts" @@ -9170,7 +9446,7 @@ msgstr "" #: templates/InvenTree/index.html:156 msgid "Expired Stock" -msgstr "期限切れ在庫" +msgstr "" #: templates/InvenTree/index.html:172 msgid "Stale Stock" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -9603,7 +9874,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:285 msgid "No category parameter templates found" -msgstr "カテゴリパラメータテンプレートはありません" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 #: templates/js/translated/part.js:1645 @@ -9617,15 +9888,15 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:326 msgid "Edit Category Parameter Template" -msgstr "カテゴリパラメータテンプレートを編集" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:353 msgid "Delete Category Parameter Template" -msgstr "カテゴリパラメータテンプレートを削除" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:388 msgid "Create Category Parameter Template" -msgstr "カテゴリパラメータテンプレートを作成" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:418 msgid "Create Part Parameter Template" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" -msgstr "在庫がありません" +msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "最新のシリアル番号" +msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" -msgstr "進捗" +msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11076,7 +11347,7 @@ msgstr "" #: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "メーカー・パーツの編集" +msgstr "" #: templates/js/translated/company.js:201 #: templates/js/translated/purchase_order.js:93 @@ -11210,7 +11481,7 @@ msgstr "" #: templates/js/translated/company.js:1181 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 msgid "Order parts" -msgstr "パーツの注文" +msgstr "" #: templates/js/translated/company.js:1198 msgid "Delete manufacturer parts" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11622,7 +11889,7 @@ msgstr "" #: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "パーツカテゴリを追加" +msgstr "" #: templates/js/translated/part.js:308 msgid "Parent part category" @@ -11634,31 +11901,31 @@ msgstr "" #: templates/js/translated/part.js:352 msgid "Create Part Category" -msgstr "パーツカテゴリを作成" +msgstr "" #: templates/js/translated/part.js:355 msgid "Create new category after this one" -msgstr "カテゴリ作成後に新しいパーツカテゴリーを作成" +msgstr "" #: templates/js/translated/part.js:356 msgid "Part category created" -msgstr "パーツカテゴリを作成しました" +msgstr "" #: templates/js/translated/part.js:370 msgid "Edit Part Category" -msgstr "パーツカテゴリを編集" +msgstr "" #: templates/js/translated/part.js:383 msgid "Are you sure you want to delete this part category?" -msgstr "このパーツカテゴリを削除してもよろしいですか?" +msgstr "" #: templates/js/translated/part.js:388 msgid "Move to parent category" -msgstr "親カテゴリに移動" +msgstr "" #: templates/js/translated/part.js:397 msgid "Delete Part Category" -msgstr "パーツカテゴリを削除" +msgstr "" #: templates/js/translated/part.js:401 msgid "Action for parts in this category" @@ -11674,7 +11941,7 @@ msgstr "" #: templates/js/translated/part.js:432 msgid "Create another part after this one" -msgstr "続けて別のパーツを作る" +msgstr "" #: templates/js/translated/part.js:433 msgid "Part created successfully" @@ -11775,11 +12042,11 @@ msgstr "" #: templates/js/translated/part.js:806 msgid "Subscribed part" -msgstr "購読中のパーツ" +msgstr "" #: templates/js/translated/part.js:810 msgid "Salable part" -msgstr "販売可能パーツ" +msgstr "" #: templates/js/translated/part.js:889 msgid "Schedule generation of a new stocktake report." @@ -11860,15 +12127,19 @@ msgstr "" #: templates/js/translated/part.js:2200 msgid "Set the part category for the selected parts" -msgstr "選択した部品にパーツカテゴリを設定します" +msgstr "" #: templates/js/translated/part.js:2205 msgid "Set Part Category" -msgstr "パーツカテゴリを設定" +msgstr "" #: templates/js/translated/part.js:2235 msgid "Set category" -msgstr "カテゴリを設定" +msgstr "" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" #: templates/js/translated/part.js:2288 msgid "parts" @@ -11876,7 +12147,7 @@ msgstr "" #: templates/js/translated/part.js:2384 msgid "No category" -msgstr "カテゴリがありません" +msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2640 @@ -11889,7 +12160,7 @@ msgstr "" #: templates/js/translated/part.js:2645 msgid "No subcategories found" -msgstr "サブカテゴリがありません" +msgstr "" #: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660 msgid "Display as tree" @@ -11897,11 +12168,11 @@ msgstr "" #: templates/js/translated/part.js:2761 msgid "Load Subcategories" -msgstr "サブカテゴリを読み込み" +msgstr "" #: templates/js/translated/part.js:2777 msgid "Subscribed category" -msgstr "購読中のカテゴリ" +msgstr "" #: templates/js/translated/part.js:2854 msgid "No test templates matching query" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12661,11 +12932,11 @@ msgstr "" #: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "シリアル番号を入力" +msgstr "" #: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "シリアル番号を入力" +msgstr "" #: templates/js/translated/stock.js:634 msgid "No matching serial number" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13083,7 +13354,7 @@ msgstr "" #: templates/js/translated/table_filters.js:279 #: templates/js/translated/table_filters.js:707 msgid "Include subcategories" -msgstr "サブカテゴリを含む" +msgstr "" #: templates/js/translated/table_filters.js:287 #: templates/js/translated/table_filters.js:755 @@ -13120,7 +13391,7 @@ msgstr "" #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "シリアル番号" +msgstr "" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13239,7 +13506,7 @@ msgstr "" #: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" -msgstr "サブカテゴリのパーツを含む" +msgstr "" #: templates/js/translated/table_filters.js:713 msgid "Show active parts" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "個人情報" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "許可" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "重要な日付" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "パーミッション設定" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "グループ" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "表示" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "項目を表示する権限" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "項目を追加する権限" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "変更" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "項目を編集する権限" -#: users/models.py:401 +#: users/models.py:413 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 70743078f1..589a5602d8 100644 --- a/InvenTree/locale/ko/LC_MESSAGES/django.po +++ b/InvenTree/locale/ko/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API endpoint 없음" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "이 모델을 볼 수 있는 권한이 없습니다." @@ -43,7 +43,7 @@ msgstr "" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "오류 세부 정보는 관리자 패널에서 찾을 수 있습니다." @@ -51,18 +51,18 @@ msgstr "오류 세부 정보는 관리자 패널에서 찾을 수 있습니다." msgid "Enter date" msgstr "날짜 입력" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "" msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "연결 오류" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "사진 크기 초과" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "사진 다운로드 수가 최대치를 초과함." -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "체코어" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "덴마크어" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "독일어" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "그리스어" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "영어" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "스페인어" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "스페인어 (멕시코)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "파르시어/페르시아어" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "핀란드어" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "프랑스어" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "히브리어" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "힌디어" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "헝가리어" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "이탈리아어" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "일본어" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "한국어" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "네덜란드어" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "노르웨이어" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "폴란드어" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "포르투갈어" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "포르투갈어 (브라질)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "러시아어" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "슬로베니아어" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "스웨덴어" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "태국어" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "터키어" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "베트남어" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "중국어 (간체)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "중국어 (번체)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "이메일" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "존재하지 않는 파일" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "존재하지 않는 외부 링크" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "첨부파일" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "첨부할 파일을 선택하세요" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "첨부할 파일을 선택하세요" msgid "Link" msgstr "링크" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "외부 URL로 링크" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "사용자" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "업로드 날짜" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "파일명은 비워둘 수 없습니다" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "파일명에 허용되지 않은 문자 '{c}'가 포함되어 있습니다" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "같은 이름의 첨부파일이 이미 존재합니다" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "파일 이름 바꾸기 오류" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "" msgid "Name" msgstr "이름" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "이름" msgid "Description" msgstr "설명" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "설명 (선택 사항)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "마크다운 노트 (선택사항)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "바코드 데이터" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "제3 자 바코드 데이터" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "바코드 해시" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "유효한 숫자여야 합니다" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "파일명" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "지원하지 않는 파일 형식" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "파일이 너무 큽니다" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "파일에서 발견된 세로열 없음." -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "파일에서 발견된 가로열 없음" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "데이터 가로열이 제공되지 않음" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "데이터 세로열이 제공되지 않음" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "사라진 필수 세로열: {name}" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "원격 이미지 파일의 URL" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "원격 URL 에서 이미지 다운로드가 활성화되지 않음" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "체코어" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "덴마크어" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "독일어" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "그리스어" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "영어" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "스페인어" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "스페인어 (멕시코)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "파르시어/페르시아어" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "핀란드어" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "프랑스어" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "히브리어" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "힌디어" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "헝가리어" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "이탈리아어" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "일본어" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "한국어" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "네덜란드어" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "노르웨이어" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "폴란드어" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "포르투갈어" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "포르투갈어 (브라질)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "러시아어" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "슬로베니아어" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "스웨덴어" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "태국어" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "터키어" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "베트남어" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "중국어 (간체)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "중국어 (번체)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Background worker 확인 실패" @@ -712,7 +722,7 @@ msgstr "" msgid "In Progress" msgstr "진행 중" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "외부 링크" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "수량 값은 0보다 커야 합니다" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "수량" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "일련번호" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "위치" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "상태" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1985,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "{name.title()} 파일" msgid "Select {name} file to upload" msgstr "업로드할 {name} 파일을 선택하세요" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "재시작 필요" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "회사명" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "기본 통화" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "URL에서 다운로드" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "바코드 지원" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "구입 가능" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "판매 가능" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "디버그 모드" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "페이지 크기" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "PDF 보고서 기본 페이지 크기" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "SSO 활성화" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "로그인 페이지에서 SSO 활성화" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "이메일 필요" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "두 번 보내기" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "작성자" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "이미지" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "회사 소개" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "웹사이트" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "회사 웹사이트 URL" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "전화번호" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "회사" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "URL에서 이미지 다운로드" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "고객" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4128,12 +4244,12 @@ msgstr "" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "이미지 업로드" +msgstr "" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "이미지 다운로드" +msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "새 회사" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "높이 [mm]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "바코드" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "이미 사용 중인 바코드입니다" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "데이터" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "키" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "버전" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "일련번호가 이미 존재합니다" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9412,11 +9688,6 @@ msgstr "메시지" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "버전" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "삭제" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -9853,7 +10124,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "선택한 이메일 주소를 정말로 제거하시겠습니까?" +msgstr "" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10320,7 +10591,7 @@ msgstr "" #: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "오류 408: 시간 초과" +msgstr "" #: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" @@ -10400,7 +10671,7 @@ msgstr "" #: templates/js/translated/barcode.js:188 msgid "Server error" -msgstr "서버 오류" +msgstr "" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" -msgstr "선택" +msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11408,11 +11679,11 @@ msgstr "" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "예" +msgstr "" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "아니오" +msgstr "" #: templates/js/translated/helpers.js:93 msgid "True" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11481,7 +11748,7 @@ msgstr "" #: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 #: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "취소" +msgstr "" #: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 #: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 @@ -11750,7 +12017,7 @@ msgstr "" #: templates/js/translated/part.js:657 msgid "Copy Bill of Materials" -msgstr "부품 명세서 복사" +msgstr "" #: templates/js/translated/part.js:685 #: templates/js/translated/table_filters.js:743 @@ -11870,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12657,19 +12928,19 @@ msgstr "" #: templates/js/translated/stock.js:593 msgid "Find Serial Number" -msgstr "일련번호 찾기" +msgstr "" #: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "일련번호를 입력하세요" +msgstr "" #: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "일련번호를 입력하세요" +msgstr "" #: templates/js/translated/stock.js:634 msgid "No matching serial number" -msgstr "일치하는 일련번호가 없습니다" +msgstr "" #: templates/js/translated/stock.js:643 msgid "More than one matching result found" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13120,7 +13391,7 @@ msgstr "" #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "일련번호" +msgstr "" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 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 a16d06bd5a..52de943c16 100644 --- a/InvenTree/locale/nl/LC_MESSAGES/django.po +++ b/InvenTree/locale/nl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:31\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API eindpunt niet gevonden" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Gebruiker heeft geen rechten om dit model te bekijken" @@ -43,7 +43,7 @@ msgstr "Ongeldige hoeveelheid ingegeven" msgid "Invalid quantity supplied ({exc})" msgstr "Ongeldige hoeveelheid ingegeven ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Error details kunnen worden gevonden in het admin scherm" @@ -51,18 +51,18 @@ msgstr "Error details kunnen worden gevonden in het admin scherm" msgid "Enter date" msgstr "Voer datum in" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Het opgegeven primaire e-mailadres is ongeldig." msgid "The provided email domain is not approved." msgstr "Het ingevoerde e-maildomein is niet goedgekeurd." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Registratie is uitgeschakeld." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Ongeldige hoeveelheid ingevoerd" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Leeg serienummer" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Duplicaat serienummer" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Geen serienummers gevonden" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Verwijder HTML tags van deze waarde" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Verbindingsfout" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Server reageerde met ongeldige statuscode" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Uitzondering opgetreden" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Server reageerde met ongeldige Content-Length waarde" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Afbeeldingsformaat is te groot" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Beelddownload overschrijdt de maximale grootte" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Externe server heeft lege reactie teruggegeven" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Opgegeven URL is geen geldig afbeeldingsbestand" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Log in bij de app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Bulgaars" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Tsjechisch" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Deens" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Duits" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Grieks" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Engels" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Spaans" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Spaans (Mexicaans)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Farsi / Perzisch" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Fins" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Frans" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Hebreeuws" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Hongaars" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Italiaans" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japans" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Koreaans" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Nederlands" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Noors" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Pools" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugees" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugees (Braziliaans)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Russisch" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Sloveens" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Servisch" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Zweeds" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Thais" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Turks" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnamees" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Chinees (vereenvoudigd)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Chinees (traditioneel)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "Email" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Metadata moeten een python dict object zijn" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Plugin Metadata" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "JSON metadata veld, voor gebruik door externe plugins" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Onjuist opgemaakt patroon" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Onbekende opmaaksleutel gespecificeerd" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Vereiste opmaaksleutel ontbreekt" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Referentieveld mag niet leeg zijn" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Referentie moet overeenkomen met verplicht patroon" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Referentienummer is te groot" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Ontbrekend bestand" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Externe link ontbreekt" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Bijlage" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Bestand als bijlage selecteren" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Bestand als bijlage selecteren" msgid "Link" msgstr "Link" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Link naar externe URL" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Opmerking" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Bestand opmerking" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Gebruiker" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "uploaddatum" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Bestandsnaam mag niet leeg zijn" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Foute bijlagemap" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Bestandsnaam bevat illegale teken '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Bestandsnaam mist extensie" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Bijlage met deze bestandsnaam bestaat al" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Fout bij hernoemen bestand" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "Dubbele namen kunnen niet bestaan onder hetzelfde bovenliggende object" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Ongeldige keuze" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Ongeldige keuze" msgid "Name" msgstr "Naam" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "Naam" msgid "Description" msgstr "Omschrijving" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Omschrijving (optioneel)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "bovenliggende" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Pad" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Markdown notitie (optioneel)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Streepjescode gegevens" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Streepjescode van derden" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Hash van Streepjescode" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Unieke hash van barcode gegevens" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Bestaande barcode gevonden" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Serverfout" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Er is een fout gelogd door de server." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Moet een geldig nummer zijn" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Selecteer valuta uit beschikbare opties" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Bestandsnaam" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Ongeldige waarde" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Data bestand" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Selecteer een bestand om te uploaden" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Niet ondersteund bestandstype" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Bestand is te groot" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Geen kolommen gevonden in het bestand" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Geen data rijen gevonden in dit bestand" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Geen data rijen opgegeven" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Geen gegevenskolommen opgegeven" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Verplichte kolom ontbreekt: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Dubbele kolom: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "URL van extern afbeeldingsbestand" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Afbeeldingen van externe URL downloaden is niet ingeschakeld" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "Bulgaars" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Tsjechisch" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Deens" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Duits" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Grieks" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Engels" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Spaans" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Spaans (Mexicaans)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Farsi / Perzisch" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Fins" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Frans" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Hebreeuws" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Hindi" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Hongaars" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Italiaans" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japans" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Koreaans" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Nederlands" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Noors" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Pools" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugees" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugees (Braziliaans)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Russisch" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Sloveens" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "Servisch" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Zweeds" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Thais" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Turks" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnamees" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Chinees (vereenvoudigd)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Chinees (traditioneel)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Achtergrondwerker check is gefaald" @@ -712,7 +722,7 @@ msgstr "Retour" msgid "In Progress" msgstr "In Behandeling" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "Afwijzen" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Ongeldige fysieke eenheid" @@ -927,16 +933,16 @@ msgstr "Over InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Productie moet geannuleerd worden voordat het kan worden verwijderd" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "Verbruiksartikelen" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "Optioneel" msgid "Tracked" msgstr "Gevolgd" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "Toegewezen" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "Toegewezen" msgid "Available" msgstr "Beschikbaar" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Productieorder" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "Productieorder" msgid "Build Orders" msgstr "Productieorders" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Ongeldige keuze voor bovenliggende productie" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Productieorderreferentie" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "Productieorderreferentie" msgid "Reference" msgstr "Referentie" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "Korte beschrijving van de build (optioneel)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Bovenliggende Productie" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Productieorder waar deze productie aan is toegewezen" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "Productieorder waar deze productie aan is toegewezen" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "Productieorder waar deze productie aan is toegewezen" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "Productieorder waar deze productie aan is toegewezen" msgid "Part" msgstr "Onderdeel" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Selecteer onderdeel om te produceren" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Verkooporder Referentie" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Verkooporder waar deze productie aan is toegewezen" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Bronlocatie" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Selecteer de locatie waar de voorraad van de productie vandaan moet komen (laat leeg om vanaf elke standaard locatie te nemen)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Bestemmings Locatie" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Selecteer locatie waar de voltooide items zullen worden opgeslagen" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Productiehoeveelheid" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Aantal voorraaditems om te produceren" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Voltooide voorraadartikelen" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Aantal voorraadartikelen die zijn voltooid" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Productiestatus" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Productiestatuscode" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Batchcode" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Batchcode voor deze productieuitvoer" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Aanmaakdatum" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Verwachte opleveringsdatum" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Doeldatum voor productie voltooiing. Productie zal achterstallig zijn na deze datum." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Opleveringsdatum" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "voltooid door" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Uitgegeven door" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Gebruiker die de productieorder heeft gegeven" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Verantwoordelijke" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "Gebruiker of groep verantwoordelijk voor deze bouwopdracht" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Externe Link" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "Bouw prioriteit" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "Prioriteit van deze bouwopdracht" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "Prioriteit van deze bouwopdracht" msgid "Project Code" msgstr "Project Code" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "Project code voor deze build order" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Productieorder {build} is voltooid" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "Een productieorder is voltooid" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Geen productie uitvoer opgegeven" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "Productie uitvoer is al voltooid" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "Productuitvoer komt niet overeen met de Productieorder" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "Hoeveelheid moet groter zijn dan nul" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "Hoeveelheid kan niet groter zijn dan aantal" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "Bouw object" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "Bouw object" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "Bouw object" msgid "Quantity" msgstr "Hoeveelheid" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "Vereiste hoeveelheid voor bouwopdracht" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Productieartikel moet een productieuitvoer specificeren, omdat het hoofdonderdeel gemarkeerd is als traceerbaar" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Toegewezen hoeveelheid ({q}) mag de beschikbare voorraad ({a}) niet overschrijden" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "Voorraad item is te veel toegewezen" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Toewijzing hoeveelheid moet groter zijn dan nul" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "Hoeveelheid moet 1 zijn voor geserialiseerde voorraad" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "Geselecteerde voorraadartikelen komen niet overeen met de BOM-regel" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "Geselecteerde voorraadartikelen komen niet overeen met de BOM-regel" msgid "Stock Item" msgstr "Voorraadartikel" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Bron voorraadartikel" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Voorraad hoeveelheid toe te wijzen aan productie" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Installeren in" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Bestemming voorraadartikel" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "Productieuitvoer" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "Productieuitvoer komt niet overeen met de bovenliggende productie" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "Uitvoeronderdeel komt niet overeen met productieorderonderdeel" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "Deze productieuitvoer is al voltooid" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "Deze productieuitvoer is niet volledig toegewezen" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "Voer hoeveelheid in voor productie uitvoer" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Geheel getal vereist omdat de stuklijst traceerbare onderdelen bevat" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Serienummers" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "Voer serienummers in voor productieuitvoeren" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "Serienummers automatisch toewijzen" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "Vereiste artikelen automatisch toewijzen met overeenkomende serienummers" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "De volgende serienummers bestaan al of zijn ongeldig" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "Een lijst van productieuitvoeren moet worden verstrekt" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "Een lijst van productieuitvoeren moet worden verstrekt" msgid "Location" msgstr "Locatie" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "Voorraadlocatie voor geannuleerde outputs" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "Toewijzingen weggooien" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "Verwijder alle voorraadtoewijzingen voor geannuleerde outputs" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "Reden voor annulering van bouworder(s)" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "Locatie van voltooide productieuitvoeren" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "Locatie van voltooide productieuitvoeren" msgid "Status" msgstr "Status" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "Incomplete Toewijzing Accepteren" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "Voltooi de uitvoer als de voorraad niet volledig is toegewezen" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "Toegewezen Voorraad Verwijderen" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "Verminder alle voorraad die al is toegewezen aan deze productie" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "Verwijder Incomplete Uitvoeren" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "Verwijder alle productieuitvoeren die niet zijn voltooid" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "Niet toegestaan" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "Accepteer zoals geconsumeerd onder deze bouwopdracht" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "De-alloceren voordat deze bouwopdracht voltooid wordt" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "Overgealloceerde voorraad" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Hoe wilt u omgaan met extra voorraaditems toegewezen aan de bouworder" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "Sommige voorraadartikelen zijn overalloceerd" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "Accepteer Niet-toegewezen" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Accepteer dat voorraadartikelen niet volledig zijn toegewezen aan deze productieorder" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Vereiste voorraad is niet volledig toegewezen" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "Accepteer Onvolledig" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "Accepteer dat het vereist aantal productieuitvoeren niet is voltooid" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "Vereiste productiehoeveelheid is voltooid" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Productieorder heeft onvolledige uitvoeren" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "Productielijn" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "Productieuitvoer" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "Productieuitvoer moet naar dezelfde productie wijzen" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "Bouw lijn-item" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part moet naar hetzelfde onderdeel wijzen als de productieorder" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "Artikel moet op voorraad zijn" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Beschikbare hoeveelheid ({q}) overschreden" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "Productieuitvoer moet worden opgegeven voor de toewijzing van gevolgde onderdelen" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Productieuitvoer kan niet worden gespecificeerd voor de toewijzing van niet gevolgde onderdelen" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "Allocaties voor artikelen moeten worden opgegeven" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Voorraadlocatie waar onderdelen afkomstig zijn (laat leeg om van elke locatie te nemen)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "Locatie uitsluiten" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "Voorraadartikelen van deze geselecteerde locatie uitsluiten" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "Uitwisselbare voorraad" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Voorraadartikelen op meerdere locaties kunnen uitwisselbaar worden gebruikt" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "Vervangende Voorraad" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "Toewijzing van vervangende onderdelen toestaan" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "Optionele Items" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "Alloceer optionele BOM items om bestelling te bouwen" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "Stuklijstartikel" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "In bestelling" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "Beschikbare Voorraad" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "Voorraad vereist voor productieorder" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Voorraad is niet volledig toegewezen aan deze productieorder" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "Voltooide Uitvoeren" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,21 +1864,21 @@ msgid "Issued By" msgstr "Uitgegeven door" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "Prioriteit" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "Verwijder Productieorder" +msgstr "" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "Bouworder QR Code" +msgstr "" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "Link Barcode aan bouwopdracht" +msgstr "" #: build/templates/build/detail.html:15 msgid "Build Details" @@ -1857,7 +1892,7 @@ msgstr "Voorraadbron" msgid "Stock can be taken from any available location." msgstr "Voorraad kan worden genomen van elke beschikbare locatie." -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "Bestemming" @@ -1870,9 +1905,9 @@ msgstr "Bestemmingslocatie niet opgegeven" msgid "Allocated Parts" msgstr "Toegewezen Onderdelen" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "Batch" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "Gecreëerd" @@ -1985,13 +2020,13 @@ msgstr "Bijlagen" msgid "Build Notes" msgstr "Productie notities" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" -msgstr "Toewijzing Voltooid" +msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" -msgstr "Alle regels zijn volledig toegewezen" +msgstr "" #: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" @@ -2043,1410 +2078,1431 @@ msgstr "{name.title()} Bestand" msgid "Select {name} file to upload" msgstr "Kies {name} bestand om te uploaden" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "Bijgewerkt" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Tijdstempel van laatste update" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "Unieke projectcode" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "Projectbeschrijving" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig)" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "Instellingswaarde" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "Gekozen waarde is geen geldige optie" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "Waarde moet een booleaanse waarde zijn" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "Waarde moet een geheel getal zijn" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "Sleutelreeks moet uniek zijn" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "Geen groep" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "Een leeg domein is niet toegestaan." -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Ongeldige domeinnaam: {domain}" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "Geen plug-in gevonden" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "Opnieuw opstarten vereist" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "Een instelling is gewijzigd waarvoor een herstart van de server vereist is" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "Migraties in behandeling" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "ID Serverinstantie" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "Stringbeschrijving voor de server instantie" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "Gebruik de instantie naam" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "Gebruik de naam van de instantie in de titelbalk" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "Tonen `over` beperken" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "Toon de `over` modal alleen aan superusers" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Bedrijfsnaam" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "Interne bedrijfsnaam" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "Basis-URL" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "Basis URL voor serverinstantie" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Standaard Valuta" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "Selecteer basisvaluta voor de berekening van prijzen" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "dagen" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "Download van URL" -#: common/models.py:1245 +#: common/models.py:1284 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:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "Download limiet" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "Maximale downloadgrootte voor externe afbeelding" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "User-agent gebruikt om te downloaden van URL" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "Sta toe om de user-agent te overschrijven die gebruikt wordt om afbeeldingen en bestanden van externe URL te downloaden (laat leeg voor de standaard)" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "Bevestiging vereist" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "Vereis expliciete bevestiging van de gebruiker voor bepaalde actie." -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "Boomstructuur Diepte" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "Standaard diepte voor treeview. Diepere niveaus kunnen geladen worden wanneer ze nodig zijn." -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "Interval voor update" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "Hoe vaak te controleren op updates (nul om uit te schakelen)" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "Automatische backup" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "Automatische back-up van database- en mediabestanden inschakelen" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "Automatische backup interval" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "Geef het aantal dagen op tussen geautomatiseerde backup" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "Interval Taak Verwijderen" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "Resultaten van achtergrondtaken worden verwijderd na het opgegeven aantal dagen" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "Error Log Verwijderings Interval" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "Resultaten van achtergrondtaken worden verwijderd na het opgegeven aantal dagen" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "Interval Verwijderen Notificatie" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "Meldingen van gebruikers worden verwijderd na het opgegeven aantal dagen" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Streepjescodeondersteuning" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "Barcode Invoer Vertraging" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "Barcode invoerverwerking vertraging" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "Barcode Webcam Ondersteuning" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "Barcode via webcam scannen in browser toestaan" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "Herzieningen onderdeel" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "Revisieveld voor onderdeel inschakelen" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "Regulier expressiepatroon voor het overeenkomende Onderdeel IPN" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "Duplicaat IPN toestaan" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "Bewerken IPN toestaan" -#: common/models.py:1368 +#: common/models.py:1407 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:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "Kopieer Onderdeel Stuklijstgegevens" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "Kopieer standaard stuklijstgegevens bij het dupliceren van een onderdeel" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "Kopieer Onderdeel Parametergegevens" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "Parametergegevens standaard kopiëren bij het dupliceren van een onderdeel" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "Kopieer Onderdeel Testdata" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "Testdata standaard kopiëren bij het dupliceren van een onderdeel" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "Kopiëer Categorieparameter Sjablonen" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "Kopieer categorieparameter sjablonen bij het aanmaken van een onderdeel" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Sjabloon" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "Onderdelen zijn standaard sjablonen" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Samenstelling" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "Onderdelen kunnen standaard vanuit andere componenten worden samengesteld" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Component" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "Onderdelen kunnen standaard worden gebruikt als subcomponenten" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Koopbaar" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "Onderdelen kunnen standaard gekocht worden" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Verkoopbaar" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "Onderdelen kunnen standaard verkocht worden" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Volgbaar" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "Onderdelen kunnen standaard gevolgd worden" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtueel" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "Onderdelen zijn standaard virtueel" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "Toon Import in Weergaven" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "Toon de importwizard in sommige onderdelenweergaven" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "Verwante onderdelen tonen" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "Verwante onderdelen voor een onderdeel tonen" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "Initiële voorraadgegevens" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "Aanmaken van eerste voorraad toestaan bij het toevoegen van een nieuw onderdeel" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Initiële leveranciergegevens" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Aanmaken van eerste leveranciersgegevens toestaan bij het toevoegen van een nieuw onderdeel" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "Onderdelennaam Weergaveopmaak" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "Opmaak om de onderdeelnaam weer te geven" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "Standaardicoon voor onderdeel catagorie" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "Standaardicoon voor onderdeel catagorie (leeg betekent geen pictogram)" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "Forceer Parameter Eenheden" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "Als er eenheden worden opgegeven, moeten parameterwaarden overeenkomen met de opgegeven eenheden" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "Minimaal aantal prijs decimalen" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Minimaal aantal decimalen om weer te geven bij het weergeven van prijsgegevens" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "Maximum prijs decimalen" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Maximum aantal decimalen om weer te geven bij het weergeven van prijsgegevens" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "Gebruik leveranciersprijzen" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Prijsvoordelen leveranciers opnemen in de totale prijsberekening" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "Aankoopgeschiedenis overschrijven" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Historische order prijzen overschrijven de prijzen van de leverancier" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "Gebruik voorraaditem prijzen" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Gebruik prijzen van handmatig ingevoerde voorraadgegevens voor prijsberekeningen" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "Voorraad artikelprijs leeftijd" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Voorraaditems ouder dan dit aantal dagen uitsluiten van prijsberekeningen" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "Gebruik variantprijzen" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "Variantenprijzen opnemen in de totale prijsberekening" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "Alleen actieve varianten" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "Gebruik alleen actieve variantonderdelen voor het berekenen van variantprijzen" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "Prijzen Herbouw interval" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "Aantal dagen voordat de prijzen voor onderdelen automatisch worden bijgewerkt" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "Interne Prijzen" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "Inschakelen van interne prijzen voor onderdelen" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "Interne prijs overschrijven" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "Indien beschikbaar, interne prijzen overschrijven berekeningen van prijsbereik" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "Printen van labels Inschakelen" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "Printen van labels via de webinterface inschakelen" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "Label Afbeelding DPI" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "DPI resolutie bij het genereren van afbeelginsbestanden voor label printer plugins" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "Activeer Rapportages" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "Activeer het genereren van rapporten" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "Foutopsporingsmodus" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "Rapporten genereren in debug modus (HTML uitvoer)" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Paginagrootte" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "Standaard paginagrootte voor PDF rapporten" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "Activeer Testrapporten" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "Activeer het genereren van testrapporten" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "Testrapporten Toevoegen" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Bij het afdrukken van een Testrapport, voeg een kopie van het Testrapport toe aan het bijbehorende Voorraadartikel" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "Globaal unieke serienummers" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "Serienummers voor voorraaditems moeten globaal uniek zijn" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "Serienummers automatisch invullen" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "Automatisch invullen van serienummer in formulieren" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "Verwijder uitgeputte voorraad" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "Bepaalt standaard gedrag wanneer een voorraaditem is uitgeput" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "Batchcode Sjabloon" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "Sjabloon voor het genereren van standaard batchcodes voor voorraadartikelen" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "Verlopen Voorraad" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "Verlopen voorraad functionaliteit inschakelen" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "Verkoop Verlopen Voorraad" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "Verkoop verlopen voorraad toestaan" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "Voorraad Vervaltijd" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "Aantal dagen voordat voorraadartikelen als verouderd worden beschouwd voor ze verlopen" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "Produceer Verlopen Voorraad" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "Sta productie met verlopen voorraad toe" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "Voorraad Eigenaar Toezicht" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "Eigenaarstoezicht over voorraadlocaties en items inschakelen" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "Voorraadlocatie standaard icoon" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "Standaard locatie pictogram (leeg betekent geen icoon)" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "Geïnstalleerde voorraad items weergeven" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "Geïnstalleerde voorraadartikelen in voorraadtabellen tonen" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "Productieorderreferentiepatroon" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "Vereist patroon voor het genereren van het Bouworderreferentieveld" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "Retourorders inschakelen" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "Retourorder functionaliteit inschakelen in de gebruikersinterface" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "Retourorder referentie patroon" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "Verplicht patroon voor het genereren van Retour Order referentie veld" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "Bewerk voltooide retourorders" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "Bewerken van retourorders toestaan nadat deze zijn voltooid" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "Verkooporderreferentiepatroon" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "Vereist patroon voor het genereren van het Verkooporderreferentieveld" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "Standaard Verzending Verkooporder" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "Aanmaken standaard verzending bij verkooporders inschakelen" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "Bewerk voltooide verkooporders" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Bewerken van verkooporders toestaan nadat deze zijn verzonden of voltooid" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "Inkooporderreferentiepatroon" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "Vereist patroon voor het genereren van het Inkooporderreferentieveld" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "Bewerk voltooide verkooporders" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Bewerken van inkooporders toestaan nadat deze zijn verzonden of voltooid" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "Wachtwoord vergeten functie inschakelen" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "Wachtwoord vergeten functie inschakelen op de inlogpagina's" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "Registratie inschakelen" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "Zelfregistratie voor gebruikers op de inlogpagina's inschakelen" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "SSO inschakelen" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "SSO inschakelen op de inlogpagina's" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "Schakel gebruikersregistratie met SSO in" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Zelfregistratie voor gebruikers middels SSO op de inlogpagina's inschakelen" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "E-mailadres verplicht" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "Vereis gebruiker om e-mailadres te registreren bij aanmelding" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "SSO-gebruikers automatisch invullen" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "Gebruikersdetails van SSO-accountgegevens automatisch invullen" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "E-mail twee keer" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "Bij inschrijving gebruikers twee keer om hun e-mail vragen" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "Wachtwoord tweemaal" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "Laat gebruikers twee keer om hun wachtwoord vragen tijdens het aanmelden" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "Toegestane domeinen" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Inschrijven beperken tot bepaalde domeinen (komma-gescheiden, beginnend met @)" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "Groep bij aanmelding" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "Groep waaraan nieuwe gebruikers worden toegewezen bij registratie" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "MFA afdwingen" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "Gebruikers moeten multifactor-beveiliging gebruiken." -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "Controleer plugins bij het opstarten" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Controleer of alle plug-ins zijn geïnstalleerd bij het opstarten - inschakelen in container-omgevingen" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "Activeer URL-integratie" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "Plugins toestaan om URL-routes toe te voegen" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "Activeer navigatie integratie" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "Plugins toestaan om te integreren in navigatie" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "Activeer app integratie" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "Activeer plug-ins om apps toe te voegen" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "Activeer planning integratie" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "Activeer plugin om periodiek taken uit te voeren" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "Activeer evenement integratie" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "Activeer plugin om op interne evenementen te reageren" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "Activeer project codes" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "Activeer project codes voor het bijhouden van projecten" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "Voorraadcontrole functionaliteit" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Schakel voorraadfunctionaliteit in voor het opnemen van voorraadniveaus en het berekenen van voorraadwaarde" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "Externe locaties uitsluiten" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "Voorraadartikelen op externe locaties uitsluiten van voorraadberekeningen" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "Automatische Voorraadcontrole Periode" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Aantal dagen tussen automatische voorraadopname (ingesteld op nul om uit te schakelen)" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "Rapport Verwijdering Interval" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Voorraadrapportage zal worden verwijderd na het opgegeven aantal dagen" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "Inactieve Onderdelen Verbergen" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Verberg inactieve delen bij items op de homepage" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "Toon geabonneerde onderdelen" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "Toon geabonneerde onderdelen op de homepage" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "Toon geabonneerde categorieën" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "Toon geabonneerde onderdeel categorieën op de startpagina" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "Toon laatste onderdelen" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "Toon laatste onderdelen op de startpagina" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "Toon niet-gevalideerde BOM's" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "Laat BOMs zien die wachten op validatie op de startpagina" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "Toon recente voorraadwijzigingen" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "Toon recent aangepaste voorraadartikelen op de startpagina" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "Toon lage voorraad" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "Toon lage voorraad van artikelen op de startpagina" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "Toon lege voorraad" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "Toon lege voorraad van artikelen op de startpagina" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "Toon benodigde voorraad" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "Toon benodigde voorraad van artikelen voor productie op de startpagina" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "Toon verlopen voorraad" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "Toon verlopen voorraad van artikelen op de startpagina" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "Toon verouderde voorraad" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "Toon verouderde voorraad van artikelen op de startpagina" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "Toon openstaande producties" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "Toon openstaande producties op de startpagina" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "Toon achterstallige productie" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "Toon achterstallige producties op de startpagina" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "Toon uitstaande PO's" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "Toon uitstaande PO's op de startpagina" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "Toon achterstallige PO's" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "Toon achterstallige PO's op de startpagina" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "Toon uitstaande SO's" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "Toon uitstaande SO's op de startpagina" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "Toon achterstallige SO's" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "Toon achterstallige SO's op de startpagina" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "Toon in behandeling SO verzendingen" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "Toon in behandeling zijnde SO verzendingen op de startpagina" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "Nieuws tonen" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "Nieuws op de startpagina weergeven" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "Inline labelweergave" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "PDF-labels in browser weergeven, in plaats van als bestand te downloaden" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "Standaard label printer" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "Instellen welke label printer standaard moet worden geselecteerd" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "Inline rapport weergeven" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "PDF-rapporten in de browser weergeven, in plaats van als bestand te downloaden" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "Zoek Onderdelen" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "Onderdelen weergeven in zoekscherm" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "Zoek leveranciersonderdelen" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "Leveranciersonderdelen weergeven in zoekscherm" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "Fabrikant onderdelen zoeken" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "Fabrikant onderdelen weergeven in zoekscherm" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "Inactieve Onderdelen Verbergen" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "Inactieve verkooporders weglaten in het zoekvenster" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "Zoek categorieën" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "Toon onderdeelcategorieën in zoekvenster" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "Zoek in Voorraad" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "Toon voorraad items in zoekvenster" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "Verberg niet beschikbare voorraad items" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "Voorraadartikelen die niet beschikbaar zijn niet in het zoekvenster weergeven" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "Locaties doorzoeken" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "Toon voorraadlocaties in zoekvenster" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "Zoek bedrijven" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "Toon bedrijven in zoekvenster" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "Zoek Bouworders" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "Toon bouworders in zoekvenster" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "Inkooporders Zoeken" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "Toon inkooporders in het zoekvenster" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "Inactieve Inkooporders Weglaten" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "Inactieve inkooporders weglaten in het zoekvenster" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "Verkooporders zoeken" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "Toon verkooporders in het zoekvenster" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "Inactieve Verkooporders Weglaten" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "Inactieve verkooporders weglaten in het zoekvenster" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "Zoek retourorders" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "Toon bouworders in zoekvenster" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "Inactieve retourbestellingen weglaten" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "Inactieve retourorders uitsluiten in zoekvenster" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "Zoekvoorbeeld resultaten" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "Aantal resultaten om weer te geven in elk gedeelte van het zoekvenster" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "Regex zoeken" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "Schakel reguliere expressies in zoekopdrachten in" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "Hele woorden zoeken" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "Zoekopdrachten geven resultaat voor hele woord overeenkomsten" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "Toon hoeveelheid in formulieren" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "Hoeveelheid beschikbare onderdelen in sommige formulieren weergeven" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "Escape-toets sluit formulieren" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "Gebruik de Escape-toets om standaard formulieren te sluiten" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "Vaste navigatiebalk" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "De navigatiebalk positie is gefixeerd aan de bovenkant van het scherm" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "Datum formaat" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "Voorkeursindeling voor weergave van datums" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Onderdeel planning" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "Toon informatie voor het plannen van onderdelen" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Voorraadcontrole onderdeel" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Toon voorraadinformatie van onderdeel (als voorraadcontrole functionaliteit is ingeschakeld)" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "Tabel tekenreekslengte" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "Standaard sjabloon product onderdeel" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "Het onderdeellabelsjabloon dat automatisch wordt geselecteerd" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "Standaard sjabloon voorraad onderdeel" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "Standaard label van voorraadlocatie" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "Foutrapportages ontvangen" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "Meldingen ontvangen van systeemfouten" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Prijs" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "Eindpunt" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "Eindpunt waarop deze webhook wordt ontvangen" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "Naam van deze webhook" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "Naam van deze webhook" msgid "Active" msgstr "Actief" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "Is deze webhook actief" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "Token" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "Token voor toegang" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "Geheim" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "Gedeeld geheim voor HMAC" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "Bericht ID" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "Host" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "Koptekst" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "Koptekst van dit bericht" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "Berichtinhoud" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "Inhoud van dit bericht" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "Aan gewerkt" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "Id" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titel" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "Gepubliceerd" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "Samenvatting" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "Gelezen" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "Afbeelding" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "Afbeelding" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Symbool" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definitie" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "Geïmporteerde onderdelen" msgid "Previous Step" msgstr "Vorige Stap" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "Website" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "URL bedrijfswebsite" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Telefoonnummer" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "Telefoonnummer voor contact" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "Contact e-mailadres" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Contact" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "Contactpunt" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "Link naar externe bedrijfsinformatie" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "is klant" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "is leverancier" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "is fabrikant" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "Fabriceert dit bedrijf onderdelen?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "Standaardvaluta die gebruikt wordt voor dit bedrijf" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Bedrijf" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basis onderdeel" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "Onderdeel selecteren" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "Onderdeel selecteren" msgid "Manufacturer" msgstr "Fabrikant" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Fabrikant selecteren" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "Fabrikant selecteren" msgid "MPN" msgstr "MPN" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "Fabrikant artikel nummer (MPN)" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "URL voor externe link van het fabrikant onderdeel" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "Omschrijving onderdeel fabrikant" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Fabrikant onderdeel" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "Parameternaam" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Waarde" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "Parameterwaarde" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "Eenheden" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "Parameter eenheden" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderdeel" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderd msgid "Supplier" msgstr "Leverancier" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Leverancier selecteren" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "Selecteer fabrikant onderdeel" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "Opmerking" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "basisprijs" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimale kosten (bijv. voorraadkosten)" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "meerdere" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "Order meerdere" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "Afbeelding downloaden van URL" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "Klant" msgid "Uses default currency" msgstr "Gebruik standaard valuta" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4128,12 +4244,12 @@ msgstr "" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "Afbeelding Uploaden" +msgstr "" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "Afbeelding Downloaden" +msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 @@ -4316,7 +4432,7 @@ msgstr "Nieuwe Parameter" #: company/templates/company/manufacturer_part.html:206 #: templates/js/translated/part.js:1422 msgid "Add Parameter" -msgstr "Parameter toevoegen" +msgstr "" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4432,20 +4548,20 @@ msgstr "" #: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" -msgstr "QR-code voor leveranciers onderdelen" +msgstr "" #: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" -msgstr "Koppel barcode aan leveranciers onderdeel" +msgstr "" #: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" -msgstr "Beschikbaarheid van onderdeel bijwerken" +msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "Bedrijven" msgid "New Company" msgstr "Nieuw Bedrijf" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "Labelnaam" @@ -4500,7 +4620,7 @@ msgstr "Label" msgid "Label template file" msgstr "Label template bestand" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "Ingeschakeld" @@ -4524,7 +4644,7 @@ msgstr "Hoogte [mm]" msgid "Label height, specified in mm" msgstr "Label hoogte, gespecificeerd in mm" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "Bestandsnaam Patroon" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "Filters" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "Totaalprijs" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "Inkooporder" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "Inkooporder" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "Link naar externe pagina" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Verwachte datum voor levering van de bestelling. De bestelling wordt achterstallig na deze datum." -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "Aangemaakt Door" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "Gebruiker of groep verantwoordelijk voor deze order" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "Orderreferentie" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "Inkooporder status" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "Bedrijf waar de artikelen van worden besteld" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "Leveranciersreferentie" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "Order referentiecode van leverancier" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "ontvangen door" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "Datum van uitgifte" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "Order uitgegeven op datum" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "Order voltooid op datum" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "Onderdeelleverancier moet overeenkomen met de Inkooporderleverancier" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "Hoeveelheid moet een positief getal zijn" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "Bedrijf waaraan de artikelen worden verkocht" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "Klantreferentie " -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "Klant order referentiecode" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "Verzenddatum" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "verzonden door" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "Order kan niet worden voltooid omdat er geen onderdelen aangewezen zijn" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "Bestelling kan niet worden voltooid omdat er onvolledige verzendingen aanwezig zijn" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "Order kan niet worden voltooid omdat er onvolledige artikelen aanwezig zijn" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "Hoeveelheid artikelen" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "Artikelregel referentie" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "Artikel notities" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "Context" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "Additionele context voor deze regel" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "Stukprijs" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "Leveranciersonderdeel moet overeenkomen met leverancier" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "verwijderd" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "Order" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "Leveranciersonderdeel" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "Leveranciersonderdeel" msgid "Received" msgstr "Ontvangen" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "Aantal ontvangen artikelen" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Inkoopprijs" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "Aankoopprijs per stuk" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "Waar wil de inkoper dat dit artikel opgeslagen wordt?" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "Virtueel onderdeel kan niet worden toegewezen aan een verkooporder" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "Alleen verkoopbare onderdelen kunnen aan een verkooporder worden toegewezen" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Verkoopprijs" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "Prijs per stuk" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "Verzonden hoeveelheid" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "Datum van verzending" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "Gecontroleerd door" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "Gebruiker die deze zending gecontroleerd heeft" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Zending" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "Zendingsnummer" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "Volgnummer" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "Zending volginformatie" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "Factuurnummer" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "Referentienummer voor bijbehorende factuur" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "Verzending is al verzonden" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "Zending heeft geen toegewezen voorraadartikelen" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "Voorraadartikel is niet toegewezen" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "Kan het voorraadartikel niet toewijzen aan een regel met een ander onderdeel" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "Kan voorraad niet toewijzen aan een regel zonder onderdeel" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Toewijzingshoeveelheid kan niet hoger zijn dan de voorraadhoeveelheid" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "Hoeveelheid moet 1 zijn voor geserialiseerd voorraadartikel" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "Verkooporder komt niet overeen met zending" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "Verzending komt niet overeen met verkooporder" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "Regel" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "Verzendreferentie verkooporder" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "Artikel" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "Selecteer voorraadartikel om toe te wijzen" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "Voer voorraadtoewijzingshoeveelheid in" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "Order kan niet worden geannuleerd" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "Order is niet open" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "Valuta Inkoopprijs" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "Leveranciersonderdeel moet worden gespecificeerd" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "Inkooporder moet worden gespecificeerd" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "De leverancier moet overeenkomen met de inkooporder" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "Inkooporder moet overeenkomen met de leverancier" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "Artikel" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "Artikelregel komt niet overeen met inkooporder" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "Selecteer bestemmingslocatie voor ontvangen artikelen" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "Voer serienummers in voor inkomende voorraadartikelen" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "Streepjescode is al in gebruik" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "Artikelen moeten worden opgegeven" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "Bestemmingslocatie moet worden opgegeven" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "Geleverde streepjescodewaarden moeten uniek zijn" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "Valuta verkoopprijs" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "Geen verzenddetails opgegeven" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "Artikelregel is niet gekoppeld aan deze bestelling" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "Hoeveelheid moet positief zijn" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "Voer serienummers in om toe te wijzen" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "Verzending is al verzonden" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "Zending is niet gekoppeld aan deze bestelling" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "Geen overeenkomst gevonden voor de volgende serienummers" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "De volgende serienummers zijn al toegewezen" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5471,7 +5688,7 @@ msgstr "" #: order/templates/order/sales_order_detail.html:18 msgid "Sales Order Items" -msgstr "Verkoooporder Artikelen" +msgstr "Verkooporder Artikelen" #: order/templates/order/sales_order_detail.html:67 #: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 @@ -5509,13 +5726,13 @@ msgstr "{part} stukprijs bijgewerkt naar {price}" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "{part} stukprijs bijgewerkt naar {price} en aantal naar {qty}" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "Onderdeel-id" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "Onderdeel naam" @@ -5523,20 +5740,20 @@ msgstr "Onderdeel naam" msgid "Part Description" msgstr "Onderdeel omschrijving" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "In bestelling" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "Binnenkomende Inkooporder" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "Uitgaande Verkooporder" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "Geproduceerde voorraad door Productieorder" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "Voorraad vereist voor Productieorder" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Standaard locatie" @@ -5690,380 +5900,375 @@ msgstr "Standaard locatie" msgid "Total Stock" msgstr "Totale Voorraad" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "Beschikbare Voorraad" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Onderdeel Categorie" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "Onderdeel Categorieën" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "Standaard locatie voor onderdelen in deze categorie" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Onderdelen mogen niet rechtstreeks aan een structurele categorie worden toegewezen, maar kunnen worden toegewezen aan subcategorieën." -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "Onderdeel naam" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "Onderdeel Categorie" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "Intern Onderdeelnummer" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "Standaardleverancier" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "Eenheden voor dit onderdeel" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "Onderdeel voor voorraadcontrole" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "Datum" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Aantal onderdelen" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "De template van de parameter moet uniek zijn" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "Parameternaam" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Parameter Template" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "Parameterwaarde" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "Standaard Parameter Waarde" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "Stuklijstartikel" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "Ongeldige hoeveelheid" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7143,7 +7340,7 @@ msgstr "" #: part/templates/part/part_base.html:580 msgid "No matching images found" -msgstr "Geen overeenkomende afbeeldingen gevonden" +msgstr "" #: part/templates/part/part_base.html:676 msgid "Hide Part Details" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "Afbeelding van onderdeel niet gevonden" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "Geen actie gespecificeerd" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Geen overeenkomende actie gevonden" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "Onvoldoende voorraad beschikbaar" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "Filters inkooporder" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "Verkooporder zoekopdracht filters" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "Totaal" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "Voorraadlocatie" msgid "Stock Locations" msgstr "Voorraadlocaties" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "Inkooporder Bron" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "Inkooporder voor dit voorraadartikel" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "Bestemming Verkooporder" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "Voorraadartikel is toegewezen aan een verkooporder" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "Artikel is toegewezen aan een verkooporder" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "Artikel is toegewezen aan een productieorder" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Product" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "Geen locatie ingesteld" @@ -9166,7 +9442,7 @@ msgstr "" #: templates/InvenTree/index.html:148 msgid "Required for Build Orders" -msgstr "Vereist voor Productieorder" +msgstr "" #: templates/InvenTree/index.html:156 msgid "Expired Stock" @@ -9178,27 +9454,27 @@ msgstr "" #: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "Productieorders in Uitvoering" +msgstr "" #: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "Achterstallige Productieorders" +msgstr "" #: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" -msgstr "Openstaande Inkooporders" +msgstr "" #: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" -msgstr "Achterstallige Inkooporders" +msgstr "" #: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" -msgstr "Openstaande Verkooporders" +msgstr "" #: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" -msgstr "Achterstallige Verkooporders" +msgstr "" #: templates/InvenTree/index.html:299 msgid "InvenTree News" @@ -9412,11 +9688,6 @@ msgstr "Bericht" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Verwijderen" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "De volgende onderdelen hebben een lage vereiste voorraad" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "Vereiste Hoeveelheid" @@ -10555,11 +10826,11 @@ msgstr "" #: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" -msgstr "Voeg Fabrikantgegevens toe" +msgstr "" #: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" -msgstr "Voeg onderdeelfabrikantgegevens toe aan geëxporteerde stuklijst" +msgstr "" #: templates/js/translated/bom.js:389 msgid "Include Supplier Data" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" -msgstr "Geen Voorraad Aanwezig" +msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10702,391 +10973,391 @@ msgstr "" #: templates/js/translated/build.js:142 msgid "Edit Build Order" -msgstr "Bewerk Productieorder" +msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" -msgstr "Maak Productieorder" +msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" -msgstr "Annuleer Productieorder" +msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" -msgstr "Weet je zeker dat je de productie wilt annuleren?" +msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" -msgstr "Voorraadartikelen zijn toegewezen aan deze productieorder" +msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" -msgstr "Er staat incomplete productie open voor deze productieorder" +msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" -msgstr "Productieorder is gereed om als voltooid te markeren" - -#: templates/js/translated/build.js:299 -msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" #: templates/js/translated/build.js:304 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "" + +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" -msgstr "Productieorder is onvolledig" +msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" -msgstr "Voltooi Productieoorder" +msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" -msgstr "De stuklijst bevat traceerbare onderdelen" +msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" -msgstr "Productieuitvoeren moeten individueel worden gegenereerd" +msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" -msgstr "Traceerbare onderdelen kunnen een serienummer hebben" +msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "Voer serienummers in om meerdere enkelvoudige productuitvoeren te genereren" +msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" -msgstr "Selecteer Productieuitvoeren" +msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" -msgstr "Voltooi Productieuitvoeren" +msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" -msgstr "Verwijder Productieuitvoeren" +msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" -msgstr "Geen productieordertoewijzingen gevonden" +msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" -msgstr "Locatie is niet opgegeven" +msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" -msgstr "Voltooi uitvoeren" +msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" -msgstr "Verwijder uitvoeren" - -#: templates/js/translated/build.js:1110 -msgid "build output" -msgstr "" - -#: templates/js/translated/build.js:1111 -msgid "build outputs" msgstr "" #: templates/js/translated/build.js:1115 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1116 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" -msgstr "Geen actieve productieuitvoeren gevonden" +msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "Onderdelen selecteren" +msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" -msgstr "Er moet op zijn minst één onderdeel toegewezen worden" +msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" -msgstr "Specificeer voorraadtoewijzingshoeveelheid" +msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" -msgstr "Selecteer bron locatie (laat het veld leeg om iedere locatie te gebruiken)" +msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" -msgstr "Voorraadartikelen toewijzen aan Productieorder" +msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" -msgstr "Geen overeenkomende voorraadlocaties" +msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" -msgstr "Geen overeenkomende voorraadartikelen" +msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "Voorraadartikelen zullen automatisch worden toegewezen aan de productieorder volgens de aangegeven richtlijnen" +msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" -msgstr "Productieorder is achterstallig" +msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" -msgstr "Voorraadtoewijzing bewerken" +msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" -msgstr "Voorraadtoewijzing verwijderen" +msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" -msgstr "Genoeg voorraad beschikbaar" +msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" -msgstr "Productie voorraad" +msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" -msgstr "Voorraad order" +msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" -msgstr "Voorraad toewijzen" +msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" #: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "Fabrikant toevoegen" +msgstr "" #: templates/js/translated/company.js:111 #: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "Fabrikantonderdeel toevoegen" +msgstr "" #: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "Fabrikantonderdeel bewerken" +msgstr "" #: templates/js/translated/company.js:201 #: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "Leverancier Toevoegen" +msgstr "" #: templates/js/translated/company.js:243 #: templates/js/translated/purchase_order.js:352 msgid "Add Supplier Part" -msgstr "Leveranciersonderdeel Toevoegen" +msgstr "" #: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" @@ -11106,7 +11377,7 @@ msgstr "" #: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "Gefabriceerde Onderdelen" +msgstr "" #: templates/js/translated/company.js:560 msgid "No company information found" @@ -11197,7 +11468,7 @@ msgstr "" #: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" -msgstr "Verwijder Fabrikantenonderdelen" +msgstr "" #: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" @@ -11205,16 +11476,16 @@ msgstr "" #: templates/js/translated/company.js:1165 msgid "Delete Parameters" -msgstr "Parameter verwijderen" +msgstr "" #: templates/js/translated/company.js:1181 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 msgid "Order parts" -msgstr "Bestel onderdelen" +msgstr "" #: templates/js/translated/company.js:1198 msgid "Delete manufacturer parts" -msgstr "Fabrikantonderdeel verwijderen" +msgstr "" #: templates/js/translated/company.js:1230 msgid "Manufacturer part actions" @@ -11222,7 +11493,7 @@ msgstr "" #: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" -msgstr "Geen fabrikantenonderdelen gevonden" +msgstr "" #: templates/js/translated/company.js:1269 #: templates/js/translated/company.js:1557 templates/js/translated/part.js:798 @@ -11234,31 +11505,31 @@ msgstr "" #: templates/js/translated/company.js:1561 templates/js/translated/part.js:802 #: templates/js/translated/part.js:1214 msgid "Assembled part" -msgstr "Samengesteld onderdeel" +msgstr "" #: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464 msgid "No parameters found" -msgstr "Geen parameters gevonden" +msgstr "" #: templates/js/translated/company.js:1428 templates/js/translated/part.js:1527 msgid "Edit parameter" -msgstr "Parameter bewerken" +msgstr "" #: templates/js/translated/company.js:1429 templates/js/translated/part.js:1528 msgid "Delete parameter" -msgstr "Parameter verwijderen" +msgstr "" #: templates/js/translated/company.js:1446 templates/js/translated/part.js:1433 msgid "Edit Parameter" -msgstr "Parameter bewerken" +msgstr "" #: templates/js/translated/company.js:1455 templates/js/translated/part.js:1549 msgid "Delete Parameter" -msgstr "Parameter verwijderen" +msgstr "" #: templates/js/translated/company.js:1486 msgid "Delete supplier parts" -msgstr "Verwijder leveranciersonderdelen" +msgstr "" #: templates/js/translated/company.js:1536 msgid "No supplier parts found" @@ -11296,7 +11567,7 @@ msgstr "" #: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "Laatst bijgewerkt" +msgstr "" #: templates/js/translated/company.js:1830 msgid "Edit price break" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11549,7 +11816,7 @@ msgstr "" #: templates/js/translated/notification.js:52 msgid "Age" -msgstr "Leeftijd" +msgstr "" #: templates/js/translated/notification.js:65 msgid "Notification" @@ -11577,36 +11844,36 @@ msgstr "" #: templates/js/translated/order.js:126 msgid "Export Order" -msgstr "Export Order" +msgstr "" #: templates/js/translated/order.js:241 msgid "Duplicate Line" -msgstr "Kopieer Regel" +msgstr "" #: templates/js/translated/order.js:255 msgid "Edit Line" -msgstr "Bewerk Regel" +msgstr "" #: templates/js/translated/order.js:268 msgid "Delete Line" -msgstr "Verwijder Regel" +msgstr "" #: templates/js/translated/order.js:281 #: templates/js/translated/purchase_order.js:1987 msgid "No line items found" -msgstr "Geen artikelen gevonden" +msgstr "" #: templates/js/translated/order.js:369 msgid "Duplicate line" -msgstr "Kopieer regel" +msgstr "" #: templates/js/translated/order.js:370 msgid "Edit line" -msgstr "Bewerk regel" +msgstr "" #: templates/js/translated/order.js:374 msgid "Delete line" -msgstr "Verwijder regel" +msgstr "" #: templates/js/translated/part.js:90 msgid "Part Attributes" @@ -11738,7 +12005,7 @@ msgstr "" #: templates/js/translated/part.js:619 msgid "Validating the BOM will mark each line item as valid" -msgstr "Validatie van de BOM markeert ieder artikel als geldig" +msgstr "" #: templates/js/translated/part.js:629 msgid "Validate Bill of Materials" @@ -11832,19 +12099,19 @@ msgstr "" #: templates/js/translated/part.js:1716 #: templates/js/translated/purchase_order.js:1651 msgid "No purchase orders found" -msgstr "Geen inkooporder gevonden" +msgstr "" #: templates/js/translated/part.js:1860 #: templates/js/translated/purchase_order.js:2150 #: templates/js/translated/return_order.js:756 #: templates/js/translated/sales_order.js:1875 msgid "This line item is overdue" -msgstr "Dit artikel is achterstallig" +msgstr "" #: templates/js/translated/part.js:1906 #: templates/js/translated/purchase_order.js:2217 msgid "Receive line item" -msgstr "Artikel ontvangen" +msgstr "" #: templates/js/translated/part.js:1969 msgid "Delete part relationship" @@ -11870,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12070,7 +12341,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:206 msgid "Edit Purchase Order" -msgstr "Bewerk Inkooporder" +msgstr "" #: templates/js/translated/purchase_order.js:223 msgid "Duplication Options" @@ -12078,38 +12349,38 @@ msgstr "" #: templates/js/translated/purchase_order.js:450 msgid "Complete Purchase Order" -msgstr "Voltooi Inkooporder" +msgstr "" #: templates/js/translated/purchase_order.js:467 #: templates/js/translated/return_order.js:210 #: templates/js/translated/sales_order.js:500 msgid "Mark this order as complete?" -msgstr "Order markeren als voltooid?" +msgstr "" #: templates/js/translated/purchase_order.js:473 msgid "All line items have been received" -msgstr "Alle artikelen zijn ontvangen" +msgstr "" #: templates/js/translated/purchase_order.js:478 msgid "This order has line items which have not been marked as received." -msgstr "Deze order heeft artikelen die niet zijn gemarkeerd als ontvangen." +msgstr "" #: templates/js/translated/purchase_order.js:479 #: templates/js/translated/sales_order.js:514 msgid "Completing this order means that the order and line items will no longer be editable." -msgstr "Na het voltooien van de order zijn de order en de artikelen langer bewerkbaar." +msgstr "" #: templates/js/translated/purchase_order.js:502 msgid "Cancel Purchase Order" -msgstr "Inkooporder annuleren" +msgstr "" #: templates/js/translated/purchase_order.js:507 msgid "Are you sure you wish to cancel this purchase order?" -msgstr "Weet u zeker dat u deze inkooporder wilt annuleren?" +msgstr "" #: templates/js/translated/purchase_order.js:513 msgid "This purchase order can not be cancelled" -msgstr "Deze inkooporder kan niet geannuleerd worden" +msgstr "" #: templates/js/translated/purchase_order.js:534 #: templates/js/translated/return_order.js:164 @@ -12118,7 +12389,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:539 msgid "Issue Purchase Order" -msgstr "Geef inkooporder uit" +msgstr "" #: templates/js/translated/purchase_order.js:631 msgid "At least one purchaseable part must be selected" @@ -12126,7 +12397,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:656 msgid "Quantity to order" -msgstr "Te bestellen aantal" +msgstr "" #: templates/js/translated/purchase_order.js:665 msgid "New supplier part" @@ -12134,11 +12405,11 @@ msgstr "" #: templates/js/translated/purchase_order.js:683 msgid "New purchase order" -msgstr "Nieuwe inkooporder" +msgstr "" #: templates/js/translated/purchase_order.js:715 msgid "Add to purchase order" -msgstr "Toevoegen aan inkooporder" +msgstr "" #: templates/js/translated/purchase_order.js:863 msgid "No matching supplier parts" @@ -12146,16 +12417,16 @@ msgstr "" #: templates/js/translated/purchase_order.js:882 msgid "No matching purchase orders" -msgstr "Geen overeenkomende inkooporders" +msgstr "" #: templates/js/translated/purchase_order.js:1069 msgid "Select Line Items" -msgstr "Selecteer artikelen" +msgstr "" #: templates/js/translated/purchase_order.js:1070 #: templates/js/translated/return_order.js:492 msgid "At least one line item must be selected" -msgstr "Ten minste één artikel moet worden geselecteerd" +msgstr "" #: templates/js/translated/purchase_order.js:1100 msgid "Received Quantity" @@ -12195,7 +12466,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:1301 msgid "Order Code" -msgstr "Order Code" +msgstr "" #: templates/js/translated/purchase_order.js:1303 msgid "Quantity to Receive" @@ -12208,7 +12479,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:1330 msgid "Receive Purchase Order Items" -msgstr "Ontvang Artikelen Inkooporder" +msgstr "" #: templates/js/translated/purchase_order.js:1398 msgid "Scan Item Barcode" @@ -12227,14 +12498,14 @@ msgstr "" #: templates/js/translated/sales_order.js:774 #: templates/js/translated/sales_order.js:998 msgid "Order is overdue" -msgstr "Order is achterstallig" +msgstr "" #: templates/js/translated/purchase_order.js:1744 #: templates/js/translated/return_order.js:354 #: templates/js/translated/sales_order.js:851 #: templates/js/translated/sales_order.js:1011 msgid "Items" -msgstr "Artikelen" +msgstr "" #: templates/js/translated/purchase_order.js:1840 msgid "All selected Line items will be deleted" @@ -12247,37 +12518,37 @@ msgstr "" #: templates/js/translated/purchase_order.js:1913 #: templates/js/translated/sales_order.js:2070 msgid "Duplicate Line Item" -msgstr "Artikel dupliceren" +msgstr "" #: templates/js/translated/purchase_order.js:1928 #: templates/js/translated/return_order.js:476 #: templates/js/translated/return_order.js:669 #: templates/js/translated/sales_order.js:2083 msgid "Edit Line Item" -msgstr "Artikel wijzigen" +msgstr "" #: templates/js/translated/purchase_order.js:1939 #: templates/js/translated/return_order.js:682 #: templates/js/translated/sales_order.js:2094 msgid "Delete Line Item" -msgstr "Artikel verwijderen" +msgstr "" #: templates/js/translated/purchase_order.js:2221 #: templates/js/translated/sales_order.js:2024 msgid "Duplicate line item" -msgstr "Artikel dupliceren" +msgstr "" #: templates/js/translated/purchase_order.js:2222 #: templates/js/translated/return_order.js:801 #: templates/js/translated/sales_order.js:2025 msgid "Edit line item" -msgstr "Artikel bewerken" +msgstr "" #: templates/js/translated/purchase_order.js:2223 #: templates/js/translated/return_order.js:805 #: templates/js/translated/sales_order.js:2031 msgid "Delete line item" -msgstr "Artikel verwijderen" +msgstr "" #: templates/js/translated/report.js:63 msgid "items selected" @@ -12335,16 +12606,16 @@ msgstr "" #: templates/js/translated/return_order.js:300 #: templates/js/translated/sales_order.js:788 msgid "Invalid Customer" -msgstr "Ongeldige Klant" +msgstr "" #: templates/js/translated/return_order.js:562 msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" -msgstr "Geen overeenkomende artikelen" +msgstr "" #: templates/js/translated/return_order.js:798 msgid "Mark item as received" @@ -12352,31 +12623,31 @@ msgstr "" #: templates/js/translated/sales_order.js:161 msgid "Create Sales Order" -msgstr "Verkooporder aanmaken" +msgstr "" #: templates/js/translated/sales_order.js:176 msgid "Edit Sales Order" -msgstr "Verkooporder bewerken" +msgstr "" #: templates/js/translated/sales_order.js:291 msgid "No stock items have been allocated to this shipment" -msgstr "Geen voorraadartikelen toegewezen aan deze zending" +msgstr "" #: templates/js/translated/sales_order.js:296 msgid "The following stock items will be shipped" -msgstr "De volgende voorraadartikelen worden verzonden" +msgstr "" #: templates/js/translated/sales_order.js:336 msgid "Complete Shipment" -msgstr "Verzending Voltooien" +msgstr "" #: templates/js/translated/sales_order.js:360 msgid "Confirm Shipment" -msgstr "Verzending Bevestigen" +msgstr "" #: templates/js/translated/sales_order.js:416 msgid "No pending shipments found" -msgstr "Geen verzendingen in behandeling gevonden" +msgstr "" #: templates/js/translated/sales_order.js:420 msgid "No stock items have been allocated to pending shipments" @@ -12384,7 +12655,7 @@ msgstr "" #: templates/js/translated/sales_order.js:430 msgid "Complete Shipments" -msgstr "Verzendingen Voltooien" +msgstr "" #: templates/js/translated/sales_order.js:452 msgid "Skip" @@ -12404,11 +12675,11 @@ msgstr "" #: templates/js/translated/sales_order.js:559 msgid "Cancel Sales Order" -msgstr "Verkooporder annuleren" +msgstr "" #: templates/js/translated/sales_order.js:564 msgid "Cancelling this order means that the order will no longer be editable." -msgstr "Na annulering van de order kan de order niet meer bewerkt worden." +msgstr "" #: templates/js/translated/sales_order.js:618 msgid "Create New Shipment" @@ -12416,116 +12687,116 @@ msgstr "" #: templates/js/translated/sales_order.js:728 msgid "No sales orders found" -msgstr "Geen verkooporder gevonden" +msgstr "" #: templates/js/translated/sales_order.js:908 msgid "Edit shipment" -msgstr "Verzending bewerken" +msgstr "" #: templates/js/translated/sales_order.js:911 msgid "Complete shipment" -msgstr "Verzending Voltooien" +msgstr "" #: templates/js/translated/sales_order.js:916 msgid "Delete shipment" -msgstr "Verzending verwijderen" +msgstr "" #: templates/js/translated/sales_order.js:933 msgid "Edit Shipment" -msgstr "Verzending bewerken" +msgstr "" #: templates/js/translated/sales_order.js:948 msgid "Delete Shipment" -msgstr "Verzending verwijderen" +msgstr "" #: templates/js/translated/sales_order.js:981 msgid "No matching shipments found" -msgstr "Geen overeenkomende verzending gevonden" +msgstr "" #: templates/js/translated/sales_order.js:1006 msgid "Shipment Reference" -msgstr "Verzendingsreferentie" +msgstr "" #: templates/js/translated/sales_order.js:1030 #: templates/js/translated/sales_order.js:1529 msgid "Not shipped" -msgstr "Niet verzonden" +msgstr "" #: templates/js/translated/sales_order.js:1048 msgid "Tracking" -msgstr "Volgen" +msgstr "" #: templates/js/translated/sales_order.js:1052 msgid "Invoice" -msgstr "Factuur" +msgstr "" #: templates/js/translated/sales_order.js:1219 msgid "Add Shipment" -msgstr "Voeg Verzending toe" +msgstr "" #: templates/js/translated/sales_order.js:1270 msgid "Confirm stock allocation" -msgstr "Bevestig de voorraadtoewijzing" +msgstr "" #: templates/js/translated/sales_order.js:1271 msgid "Allocate Stock Items to Sales Order" -msgstr "Voorraadartikel toewijzen aan Verkooporder" +msgstr "" #: templates/js/translated/sales_order.js:1477 msgid "No sales order allocations found" -msgstr "Geen verkooporder toewijzingen gevonden" +msgstr "" #: templates/js/translated/sales_order.js:1569 msgid "Edit Stock Allocation" -msgstr "Bewerk Voorraadtoewijzing" +msgstr "" #: templates/js/translated/sales_order.js:1583 msgid "Confirm Delete Operation" -msgstr "Bevestig Verwijderen" +msgstr "" #: templates/js/translated/sales_order.js:1584 msgid "Delete Stock Allocation" -msgstr "Verwijder Voorraadtoewijzing" +msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 #: templates/js/translated/stock.js:1744 msgid "Shipped to customer" -msgstr "Verzonden aan klant" +msgstr "" #: templates/js/translated/sales_order.js:1631 #: templates/js/translated/sales_order.js:1719 msgid "Stock location not specified" -msgstr "Voorraadlocatie niet gespecificeerd" +msgstr "" #: templates/js/translated/sales_order.js:2008 msgid "Allocate serial numbers" -msgstr "Wijs serienummers toe" +msgstr "" #: templates/js/translated/sales_order.js:2012 msgid "Purchase stock" -msgstr "Koop voorraad" +msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" -msgstr "Bereken prijs" +msgstr "" #: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been shipped" -msgstr "Kan niet worden verwijderd omdat artikelen verzonden zijn" +msgstr "" #: templates/js/translated/sales_order.js:2038 msgid "Cannot be deleted as items have been allocated" -msgstr "Kan niet worden verwijderd omdat artikelen toegewezen zijn" +msgstr "" #: templates/js/translated/sales_order.js:2109 msgid "Allocate Serial Numbers" -msgstr "Wijs Serienummers Toe" +msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" -msgstr "Werk Stukprijs Bij" +msgstr "" #: templates/js/translated/search.js:270 msgid "No results" @@ -12573,7 +12844,7 @@ msgstr "" #: templates/js/translated/stock.js:202 msgid "Edit Stock Location" -msgstr "Bewerk Voorraadlocatie" +msgstr "" #: templates/js/translated/stock.js:217 msgid "New Stock Location" @@ -12597,7 +12868,7 @@ msgstr "" #: templates/js/translated/stock.js:250 msgid "Delete Stock Location" -msgstr "Verwijder Voorraadlocatie" +msgstr "" #: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -12809,11 +13080,11 @@ msgstr "" #: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" -msgstr "Toegewezen aan Verkooporder" +msgstr "" #: templates/js/translated/stock.js:1754 msgid "No stock location set" -msgstr "Geen voorraadlocatie ingesteld" +msgstr "" #: templates/js/translated/stock.js:1810 msgid "Change stock status" @@ -12849,7 +13120,7 @@ msgstr "" #: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" -msgstr "Voorraadartikel toegewezen aan verkooporder" +msgstr "" #: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" @@ -12942,7 +13213,7 @@ msgstr "" #: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" -msgstr "Inkooporder bestaat niet meer" +msgstr "" #: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" @@ -13029,7 +13300,7 @@ msgstr "" #: templates/js/translated/table_filters.js:613 #: templates/js/translated/table_filters.js:654 msgid "Order status" -msgstr "Order status" +msgstr "" #: templates/js/translated/table_filters.js:94 #: templates/js/translated/table_filters.js:618 @@ -13051,7 +13322,7 @@ msgstr "" #: templates/js/translated/table_filters.js:162 msgid "Assembled Part" -msgstr "Samengesteld onderdeel" +msgstr "" #: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" @@ -13138,7 +13409,7 @@ msgstr "" #: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" -msgstr "Onderdeel is een assemblage" +msgstr "" #: templates/js/translated/table_filters.js:335 msgid "Is allocated" @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13284,11 +13551,11 @@ msgstr "" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "Toon Kalenderweergave" +msgstr "" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "Toon Lijstweergave" +msgstr "" #: templates/js/translated/tables.js:112 msgid "Display tree view" @@ -13316,7 +13583,7 @@ msgstr "" #: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "rijen per pagina" +msgstr "" #: templates/js/translated/tables.js:537 msgid "Showing all rows" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 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 690904634b..8d14b2be90 100644 --- a/InvenTree/locale/no/LC_MESSAGES/django.po +++ b/InvenTree/locale/no/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Norwegian\n" "Language: no_NO\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API-endepunkt ikke funnet" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Brukeren har ikke rettigheter til å se denne modellen" @@ -43,7 +43,7 @@ msgstr "Ugyldig mengde oppgitt" msgid "Invalid quantity supplied ({exc})" msgstr "Ugyldig mengde oppgitt ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Feildetaljer kan finnes i admin-panelet" @@ -51,18 +51,18 @@ msgstr "Feildetaljer kan finnes i admin-panelet" msgid "Enter date" msgstr "Oppgi dato" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Den oppgitte primære e-postadressen er ikke gyldig." msgid "The provided email domain is not approved." msgstr "Det oppgitte e-postdomenet er ikke godkjent." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Registrering er deaktivert." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Ugyldig mengde oppgitt" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Tom serienummerstreng" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Duplisert serienummer" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Ugyldig gruppesekvens: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Gruppesekvens {group} overskrider tillatt antall ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Ugyldig gruppesekvens: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Ingen serienummer funnet" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Antall unike serienumre ({len(serials)}) må samsvare med antallet ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Fjern HTML-tagger fra denne verdien" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Tilkoblingsfeil" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Serveren svarte med ugyldig statuskode" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Det har oppstått et unntak" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Serveren svarte med ugyldig \"Content-Length\"-verdi" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Bildestørrelsen er for stor" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Bildenedlasting overskred maksimal størrelse" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Ekstern server returnerte tomt svar" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Angitt URL er ikke en gyldig bildefil" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Logg inn på appen" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Bulgarsk" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Tsjekkisk" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Dansk" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Tysk" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Gresk" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Engelsk" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Spansk" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Spansk (Meksikansk)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Farsi / Persisk" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Finsk" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Fransk" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Hebraisk" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Ungarsk" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Italiensk" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japansk" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Koreansk" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Nederlandsk" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norsk" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Polsk" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugisisk" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugisisk (Brasil)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Russisk" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "Slovakisk" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Slovensk" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Serbisk" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Svensk" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Thailandsk" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Tyrkisk" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnamesisk" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Kinesisk (forenklet)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Kinesisk (tradisjonell)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "[{site_name}] Logg inn på appen" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "E-post" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "Feil under validering av utvidelse" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Metadata må være et python dict-objekt" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Utvidelse-metadata" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "JSON-metadatafelt, for bruk av eksterne utvidelser" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Uriktig formatert mønster" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Ukjent formatnøkkel spesifisert" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Mangler nødvendig formatnøkkel" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Referansefeltet kan ikke være tomt" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Referansen må samsvare påkrevd mønster" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Referansenummeret er for stort" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Fil mangler" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Mangler eksternlenke" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Vedlegg" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Velg fil å legge ved" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Velg fil å legge ved" msgid "Link" msgstr "Lenke" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Lenke til ekstern URL" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Kommentar" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Kommentar til fil" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Bruker" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "opplastet dato" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Filnavn kan ikke være tomt" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Ugyldig vedleggskatalog" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Filnavn inneholder ugyldig tegn '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Filnavn mangler filtype" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Vedlegg med dette filnavnet finnes allerede" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Feil ved endring av filnavn" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "Duplikatnavn kan ikke eksistere under samme overordnede" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Ugyldig valg" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Ugyldig valg" msgid "Name" msgstr "Navn" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,273 +531,149 @@ msgstr "Navn" msgid "Description" msgstr "Beskrivelse" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Beskrivelse (valgfritt)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "overkategori" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Sti" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Markdown-notater (valgfritt)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Strekkodedata" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Tredjeparts strekkodedata" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Strekkode-hash" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Unik hash av strekkodedata" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Eksisterende strekkode funnet" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Serverfeil" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "En feil har blitt logget av serveren." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Må være et gyldig tall" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Velg valuta ut fra tilgjengelige alternativer" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "Du har ikke tillatelse til å endre denne brukerrollen." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "Bare superbrukere kan opprette nye brukere" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" -msgstr "Velkommen til {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." +msgstr "Din konto er opprettet." -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." -msgstr "Kontoen din har blitt opprettet.\n\n" -"Vennligst bruk funksjonen for tilbakestilling av passord for å få tilgang (på https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" +msgstr "Vennligst bruk funksjonen for å tilbakestille passord for å logge inn" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "Velkommen til InvenTree" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Filnavn" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Ugyldig verdi" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Datafil" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Velg datafil for opplasting" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Filtypen støttes ikke" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Filen er for stor" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Ingen kolonner funnet i filen" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Ingen datarader funnet i fil" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Ingen datarader oppgitt" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Ingen datakolonner angitt" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Mangler påkrevd kolonne: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Dupliaktkolonne: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "Eksternt bilde" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "URLtil ekstern bildefil" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Nedlasting av bilder fra ekstern URL er ikke aktivert" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "Bulgarsk" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Tsjekkisk" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Dansk" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Tysk" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Gresk" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Engelsk" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Spansk" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Spansk (Meksikansk)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Farsi / Persisk" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Finsk" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Fransk" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Hebraisk" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Hindi" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Ungarsk" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Italiensk" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japansk" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Koreansk" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Nederlandsk" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norsk" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Polsk" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugisisk" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugisisk (Brasil)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Russisk" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Slovensk" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "Serbisk" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Svensk" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Thailandsk" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Tyrkisk" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnamesisk" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Kinesisk (forenklet)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Kinesisk (tradisjonell)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Sjekk av bakgrunnsarbeider mislyktes" @@ -713,7 +722,7 @@ msgstr "Returnert" msgid "In Progress" msgstr "Pågående" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -876,10 +885,6 @@ msgstr "Avvis" msgid "Unknown database" msgstr "Ukjent database" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "{version.inventreeInstanceTitle()} v{version.inventreVersion()}" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Ugyldig fysisk enhet" @@ -928,16 +933,16 @@ msgstr "Om InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Produksjonen må avbrytes før den kan slettes" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "Forbruksvare" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -949,18 +954,18 @@ msgstr "Valgfritt" msgid "Tracked" msgstr "Spores" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "Tildelt" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -970,16 +975,16 @@ msgstr "Tildelt" msgid "Available" msgstr "Tilgjengelig" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Produksjonsordre" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -990,27 +995,27 @@ msgstr "Produksjonsordre" msgid "Build Orders" msgstr "Produksjonsordrer" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Ugyldig valg for overordnet produksjon" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "Produksjonsordrens del kan ikke endres" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Produksjonsordre-referanse" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1018,27 +1023,27 @@ msgstr "Produksjonsordre-referanse" msgid "Reference" msgstr "Referanse" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "Kort beskrivelse av produksjonen (valgfritt)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Overordnet produksjon" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Produksjonsordre som denne produksjonen er tildelt" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1049,7 +1054,7 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1057,8 +1062,8 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1082,144 +1087,144 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt" msgid "Part" msgstr "Del" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Velg del å produsere" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Salgsordrereferanse" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Salgsordren denne produksjonen er tildelt til" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Kildeplassering" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Velg plassering å ta lagerbeholdning fra for denne produksjonen (la stå tomt for a ta fra alle lagerplasseringer)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Fullført plassering" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Velg plassering der fullførte artikler vil bli lagret" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Produksjonsmengde" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Antall lagervarer å produsere" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Fullførte artikler" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Antall lagervarer som er fullført" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Produksjonsstatus" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Produksjonsstatuskode" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Batchkode" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Batchkode for denne produksjonsartikkelen" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Opprettelsesdato" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Forventet sluttdato" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Måldato for ferdigstillelse. Produksjonen vil være forfalt etter denne datoen." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Fullført dato" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "fullført av" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Utstedt av" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Brukeren som utstedte denne produksjonsordren" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Ansvarlig" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "Bruker eller gruppe ansvarlig for produksjonsordren" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Ekstern lenke" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "Produksjonsprioritet" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "Produksjonsordrens prioritet" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1228,52 +1233,52 @@ msgstr "Produksjonsordrens prioritet" msgid "Project Code" msgstr "Prosjektkode" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "Prosjektkode for denne produksjonsordren" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Produksjonsordre {build} er fullført" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "En produksjonsordre er fullført" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Ingen produksjonsartikkel spesifisert" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "Produksjonsartikkelen er allerede fullført" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "Produksjonsartikkelen samsvarer ikke med produksjonsordren" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "Mengden må være større enn null" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "Kvantitet kan ikke være større enn utgangsantallet" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "Produksjonsobjekt" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1283,15 +1288,15 @@ msgstr "Produksjonsobjekt" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1315,41 +1320,41 @@ msgstr "Produksjonsobjekt" msgid "Quantity" msgstr "Antall" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "Påkrevd antall for produksjonsordre" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Produksjonselement må spesifisere en produksjonsartikkel, da master-del er merket som sporbar" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Tildelt antall ({q}) kan ikke overstige tilgjengelig lagerbeholdning ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "Lagervaren er overtildelt" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Tildelingsantall må være større enn null" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "Mengden må være 1 for serialisert lagervare" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "Valgt lagervare samsvarer ikke med BOM-linjen" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1361,89 +1366,89 @@ msgstr "Valgt lagervare samsvarer ikke med BOM-linjen" msgid "Stock Item" msgstr "Lagervare" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Kildelagervare" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Lagerantall å tildele til produksjonen" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Monteres i" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Lagervare for montering" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "Produksjonsartikkel" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "Produksjonsartikkel samsvarer ikke med overordnet produksjon" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "Resultatdel samsvarer ikke med produksjonsordredel" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "Denne produksjonsartikkelen er allerede fullført" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "Denne produksjonsartikkelen er ikke fullt tildelt" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "Angi antall for produksjonsartikkel" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "Heltallsverdi kreves for sporbare deler" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Heltallsverdi kreves, da stykklisten inneholder sporbare deler" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Serienummer" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "Angi serienummer for produksjonsartikler" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "Automatisk tildeling av serienummer" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "Automatisk tildeling av nødvendige artikler med tilsvarende serienummer" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "Følgende serienummer finnes allerede eller er ugyldige" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "En liste over produksjonsartikler må oppgis" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1456,32 +1461,32 @@ msgstr "En liste over produksjonsartikler må oppgis" msgid "Location" msgstr "Plassering" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "Lagerplassering for skrotede produksjonsartikler" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "Forkast tildelinger" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "Forkast tildelinger fra skrotede produksjonsartikler" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "Grunn for skroting av produksjonsartikler" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "Plassering for ferdige produksjonsartikler" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1491,159 +1496,188 @@ msgstr "Plassering for ferdige produksjonsartikler" msgid "Status" msgstr "Status" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "Godta ufullstendig tildeling" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "Fullfør artikler dersom lagerbeholdning ikke er fullt tildelt" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "Fjern tildelt lagerbeholdning" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "Trekk fra all lagerbeholdning som allerede er tildelt denne produksjonen" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "Fjern ufullstendige artikler" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "Slett alle produksjonsartikler som ikke er fullført" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "Ikke tillatt" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "Godta som brukt av denne produksjonsordren" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "Fjern tildeling før produksjonsordren fullføres" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "Overtildelt lagerbeholdning" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Hvordan vil du håndtere ekstra lagervarer tildelt produksjonsordren" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "Noen lagervarer har blitt overtildelt" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "Godta ikke tildelt" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Godta at lagervarer ikke er fullt tildelt til denne produksjonsordren" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Nøvendig lagerbeholdning er ikke fullt tildelt" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "Godta uferdig" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "Godta at nødvendig antall fullførte produksjonsartikler ikke er nådd" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "Nødvendig produksjonsmengde er ikke nådd" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Produksjonsordren har uferdige artikler" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "Produksjonslinje" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "Produksjonsartikkel" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "Produksjonsartikkel må peke til samme produksjon" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "Produksjonsartikkel" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part må peke på den samme delen som produksjonsordren" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "Artikkelen må være på lager" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Tilgjengelig antall ({q}) overskredet" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "Produksjonsartikkel må spesifiseres for tildeling av sporede deler" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Produksjonsartikkel kan ikke spesifiseres for tildeling av usporede deler" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "Tildelingsartikler må oppgis" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Lagerplassering hvor deler skal hentes (la stå tomt for å ta fra alle plasseringer)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "Eksluderer plassering" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "Ekskluder lagervarer fra denne valgte plasseringen" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "Utskiftbar lagerbeholdning" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Lagervarer ved flere plasseringer kan brukes om hverandre" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "Erstatning-lagerbeholdning" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "Tilatt tildelling av erstatningsdeler" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "Valgfrie artikler" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "Tildel valgfrie BOM-artikler til produksjonsordre" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "BOM-artikkel" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "Tildelt lagerbeholdning" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "I bestilling" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "I produksjon" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "Tilgjengelig lagerbeholdning" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "Lagerbeholdning kreves for produksjonsordre" @@ -1769,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Lagerbeholdning er ikke fullt tildelt til denne Produksjonsordren" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1807,8 +1841,8 @@ msgid "Completed Outputs" msgstr "Fullførte byggeresultater" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1830,7 +1864,7 @@ msgid "Issued By" msgstr "Utstedt av" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "Prioritet" @@ -1858,7 +1892,7 @@ msgstr "Lagerkilde" msgid "Stock can be taken from any available location." msgstr "Lagervare kan hentes fra alle tilgengelige plasseringer." -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "Destinasjon" @@ -1871,9 +1905,9 @@ msgstr "Målplassering er ikke spesifisert" msgid "Allocated Parts" msgstr "Tildelte deler" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1887,7 +1921,7 @@ msgstr "Batch" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "Opprettet" @@ -1986,11 +2020,11 @@ msgstr "Vedlegg" msgid "Build Notes" msgstr "Produksjonsnotater" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "Tildeling fullført" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "Alle linjer er fullt tildelt" @@ -2044,1410 +2078,1431 @@ msgstr "{name.title()} Fil" msgid "Select {name} file to upload" msgstr "Velg {name} fil som skal lastes opp" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "Oppdatert" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Tidsstempel for forrige oppdatering" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "Unik prosjektkode" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "Prosjektbeskrivelse" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "Bruker eller gruppe ansvarlig for dette prosjektet" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "Innstillingsnøkkel (må være unik - ufølsom for store of små bokstaver)" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "Innstillings verdi" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "Valgt verdi er ikke et gyldig alternativ" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "Verdien må være en boolsk verdi" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "Verdien må være et heltall" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "Nøkkelstreng må være unik" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "Ingen gruppe" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "Et tomt domene er ikke tillatt." -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Ugyldig domenenavn: {domain}" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "Ingen programtillegg" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "Omstart kreves" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "En innstilling har blitt endret som krever en omstart av serveren" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "Ventende migrasjoner" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "Antall ventende databasemigreringer" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "Navn på serverinstans" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "Strengbeskrivelse for serverinstansen" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "Bruk instansnavn" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "Bruk instansnavnet på tittellinjen" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "Begrens visning av 'om'" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "Vis `about`-modal kun til superbrukere" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Firmanavn" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "Internt firmanavn" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "Base-URL" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "Base-URL for serverinstans" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Standardvaluta" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "Velg grunnvalutaen for prisberegninger" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "Oppdateringsintervall for valuta" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "Hvor ofte valutakurser skal oppdateres (sett til null for å deaktiverere)" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "dager" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "Valutaoppdaterings-plugin" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "Valgt valutaoppdaterings-plugin" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "Last ned fra URL" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "Tillat nedlastning av eksterne bilder og filer fra ekstern URL" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "Nedlastingsgrense" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "Maksimal tillatt nedlastingsstørrelse for eksternt bilde" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "User-Agent brukt for å laste ned fra URL" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "Tillat overstyring av User-Agent brukt for å laste ned bilder og filer fra eksterne URLer (lå stå blank for standard)" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "Streng URL-validering" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "Krev skjemaspesifikasjon ved validering av URLer" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "Krev bekreftelse" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "Krev eksplisitt brukerbekreftelse for visse handlinger." -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "Tredybde" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "Standard tredybde for trevisning. Dypere nivåer kan lastes inn ved behov." -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "Intervall for oppdateringssjekk" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "Tidsintervall for å se etter oppdateringer(sett til null for å skru av)" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "Automatisk sikkerhetskopiering" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "Aktiver automatisk sikkerhetskopiering av database og mediafiler" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "Automatisk sikkerhetskopieringsintervall" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "Angi antall dager mellom automatiske sikkerhetskopieringshendelser" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "Slettingsintervall for oppgaver" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "Bakgrunnsoppgaveresultater vil bli slettet etter antall angitte dager" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "Slettingsintervall for feillogg" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "Feilloggene vil bli slettet etter et angitt antall dager" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "Slettingsintervall for varsler" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "Brukervarsler slettes etter angitt antall dager" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Strekkodestøtte" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "Aktiver støtte for strekkodeleser i webgrensesnittet" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "Innlesingsforsinkelse for strekkode" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "Tidsforsinkelse for behandling av strekkode" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "Støtte for strekkodewebkamera" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "Tillat strekkodelesning via webkamera i nettleseren" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "Delrevisjoner" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "Aktiver revisjonsfeltet for Del" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "IPN regex" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "Regulært uttrykksmønster for matching av internt delnummer" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "Tilat duplikat av internt delnummer" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "Tillat flere deler å dele samme interne delnummer" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "Tillat redigering av internt delnummer" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "Tillat endring av IPN-verdien mens du redigerer en del" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "Kopier BOM-data fra del" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "Kopier BOM-data som standard når du dupliserer en del" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "Kopier parameterdata fra del" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "Kopier parameterdata som standard ved duplisering av en del" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "Kopier testdata fra del" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "Kopier testdata som standard ved duplisering av en del" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "Kopier designmaler for kategoriparametere" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "Kopier parametermaler for kategori ved oppretting av en del" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Mal" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "Deler er maler som standard" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Sammenstilling" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "Deler kan settes sammen fra andre komponenter som standard" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Komponent" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "Deler kan bli brukt som underkomponenter som standard" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Kjøpbar" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "Deler er kjøpbare som standard" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Salgbar" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "Deler er salgbare som standard" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Sporbar" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "Deler er sporbare som standard" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtuelle" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "Deler er virtuelle som standard" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "Vis import i visninger" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "Vis importveiviseren i noen deler visninger" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "Vis relaterte deler" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "Vis relaterte deler i en del" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "Innledende lagerbeholdningsdata" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "Tillat oppretting av innledende lagerbeholdning når en ny del opprettes" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Innledende leverandørdata" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Tillat oppretting av innledende leverandørdata når en ny del opprettes" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "Visningsformat for delnavn" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "Format for å vise delnavnet" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "Standardikon for delkategorier" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "Standardikon for delkategorier (tomt betyr ingen ikon)" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "Tving parameterenheter" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "Hvis det er angitt en enhet, skal parameterverdiene samsvare med de angitte enhetene" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "Minimum antall desimalplasser for priser" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Minimum antall desimalplasser som skal vises når man gjengir prisdata" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "Maksimalt antall desimalplasser for priser" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Maksimalt antall desimalplasser som skal vises når man gjengir prisdata" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "Bruk leverandørpriser" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Inkluder leverandørprisbrudd i beregninger av totalpriser" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "Innkjøpshistorikkoverstyring" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Historiske innkjøpspriser overstyrer leverandørprisnivåer" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "Bruk lagervarepriser" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Bruk priser fra manuelt innlagte lagervarer for prisberegninger" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "Lagervare prisalder" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Unnta lagervarer som er eldre enn dette antall dager fra prisberegninger" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "Bruk Variantpriser" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "Inkluder variantpriser i beregninger av totale priser" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "Kun aktive varianter" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "Bruk kun aktive variantdeler til beregning av variantprising" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "Intervall for rekalkulering av priser" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "Antall dager før delpriser blir automatisk oppdatert" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "Interne Priser" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "Aktiver interne priser for deler" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "Intern prisoverstyring" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "Hvis tilgjengelig, overstyrer interne priser kalkulering av prisområde" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "Aktiver etikettutskrift" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "Aktiver utskrift av etiketter fra nettleseren" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "Etikettbilde-DPI" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "DPI-oppløsning når når det genereres bildefiler for sending til utvidelser for etikettutskrift" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "Aktiver Rapporter" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "Aktiver generering av rapporter" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "Feilsøkingsmodus" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "Generer rapporter i feilsøkingsmodus (HTML-output)" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Sidestørrelse" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "Standard sidestørrelse for PDF-rapporter" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "Aktiver Testrapporter" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "Aktiver generering av testrapporter" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "Legg ved testrapporter" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Når det skrives ut en Testrapport, legg ved en kopi av Testrapporten på den assosierte Lagervaren" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "Globalt Unike Serienummer" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "Serienummer for lagervarer må være globalt unike" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "Automatisk tildeling av Serienummer" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "Aumatisk fyll ut serienummer i skjemaer" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "Slett oppbrukt lagerbeholdning" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "Bestemmer standard oppførsel når en lagervare er oppbrukt" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "Batchkodemal" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "Mal for generering av standard batchkoder for lagervarer" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "Lagerbeholdning utløper" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "Aktiver funksjonalitet for utløp av lagerbeholdning" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "Selg utløpt lagerbeholdning" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "Tillat salg av utgått lagerbeholdning" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "Foreldet lagerbeholdning tidsintervall" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "Antall dager før lagervarer er ansett som foreldet før utløp" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "Produsér Utløpt Lagerbeholdning" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "Tillat produksjon med utløpt lagerbeholdning" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "Kontroll over eierskap av lagerbeholdning" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "Aktiver eierskap over lagerplasseringer og -varer" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "Lagerplassering standard ikon" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "Lagerplassering standard ikon (tomt betyr ingen ikon)" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "Vis installerte lagervarer" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "Vis installerte lagervarer i lagertabeller" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "Produksjonsordre-referansemønster" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "Nødvendig mønster for å generere Produksjonsordre-referansefeltet" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "Aktiver returordrer" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "Aktiver returordrefunksjonalitet i brukergrensesnittet" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "Returordre-referansemønster" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "Påkrevd mønster for å generere returordrereferansefelt" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "Rediger fullførte returordrer" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "Tillat redigering av returordrer etter de er fullført" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "Salgsordre-referansemønster" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "Påkrevd mønster for å generere salgsordrereferansefelt" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "Salgsordre standard fraktmetode" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "Aktiver opprettelse av standard forsendelse med salgsordrer" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "Rediger fullførte salgsordrer" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Tillat redigering av salgsordrer etter de har blitt sendt eller fullført" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "Referansemønster for innkjøpsordre" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "Obligatorisk mønster for generering av referansefelt for innkjøpsordre" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "Rediger fullførte innkjøpsordre" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Tillat redigering av innkjøpsordre etter at de har blitt sendt eller fullført" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" -msgstr "" +msgstr "Autofullfør innkjøpsordrer" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" -msgstr "" +msgstr "Automatisk merk innkjøpsordre som fullført når alle ordrelinjer er mottatt" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "Aktiver passord glemt" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "Ativer funskjon for glemt passord på innloggingssidene" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "Aktiver registrering" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "Aktiver SSO" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "Aktiver SSO på innloggingssidene" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "Aktiver SSO-registrering" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Aktiver selvregistrering via SSO for brukere på innloggingssiden" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "E-postadresse kreves" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "Krevt at brukere angir e-post ved registrering" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "Auto-utfyll SSO-brukere" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "Fyll automatisk ut brukeropplysninger fra SSO-kontodata" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "E-post to ganger" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "Spør brukeren om e-post to ganger ved registrering" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "Passord to ganger" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "Spør brukeren om passord to ganger ved registrering" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "Tillatte domener" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Begrens registrering til bestemte domener (kommaseparert, begynner med @)" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "Gruppe ved registrering" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "Gruppe nye brukere blir tilknyttet ved registrering" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "Krev MFA" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "Brukere må bruke flerfaktorsikkerhet." -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "Sjekk utvidelser ved oppstart" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Sjekk at alle utvidelser er installert ved oppstart - aktiver i containermiljøer" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "Aktiver URL-integrasjon" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "Tillat utvidelser å legge til URL-ruter" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "Aktiver navigasjonsintegrasjon" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "Tillat utvidelser å integrere mot navigasjon" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "Aktiver app-integrasjon" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "Tillat utvidelser å legge til apper" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "Aktiver tidsplanintegrasjon" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "Tillat utvidelser å kjøre planlagte oppgaver" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "Aktiver hendelsesintegrasjon" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "Tillat utvidelser å reagere på interne hendelser" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "Aktiver prosjektkoder" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "Aktiver prosjektkoder for å spore prosjekter" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "Varetellingsfunksjonalitet" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Aktiver varetellingsfunksjonalitet for å registrere lagernivåer og regne ut lagerverdi" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "Ekskluder eksterne plasseringer" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "Eksluder lagervarer i eksterne plasseringer fra varetellinger" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "Automatisk varetellingsperiode" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Antall dager mellom automatisk varetellingsregistrering (sett til null for å deaktivere)" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "Rapportslettingsintervall" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Varetellingsrapporter vil slettes etter angitt antall dager" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "Vis brukernes fulle navn" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "Vis brukernes fulle navn istedet for brukernavn" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "Innstillingsnøkkel (må være unik - ufølsom for store og små bokstaver" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "Skjul inaktive elementer" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Skjul inaktive deler i resultater som vises på hjemmesiden" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "Vis abonnerte deler" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "Vis abonnerte deler på startsiden" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "Vis abonnerte kategorier" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "Vis abonnerte delkatekorier på startsiden" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "Vis nyeste deler" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "Vis nyeste deler på startsiden" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "Vis uvaliderte stykklister" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "Vis stykklister som venter på validering på startsiden" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "Vis nylige lagerendringer" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "Vis nylig endrede lagervarer på startsiden" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "Vis lav lagerbeholdning" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "Vis lave lagervarer på startsiden" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "Vis tomme lagervarer" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "Vis tom lagerbeholdning på startsiden" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "Vis nødvendig lagerbeholdning" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "Vis lagervarer som trengs for produksjon på startsiden" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "Vis utløpt lagerbeholdning" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "Vis utløpte lagervarer på startsiden" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "Vis foreldet lagerbeholdning" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "Vis foreldet lagerbeholdning på startsiden" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "Vis ventende produksjoner" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "Vi ventende produksjoner på startsiden" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "Vis forfalte produksjoner" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "Vis forfalte produksjoner på startsiden" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "Vis utestående Innkjøpsordrer" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "Vis utestående Innkjøpsordrer på startsiden" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "Vis forfalte Innkjøpsordrer" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "Vis forfalte Innkjøpsordrer på startsiden" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "Vis utestående Salgsordrer" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "Vis utestående Salgsordrer på startsiden" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "Vis forfalte SOer" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "Vis forfalte SOer på startsiden" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "Vis ventende SO-forsendelser" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "Vis ventende SO-forsendelser på startsiden" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "Vis Nyheter" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "Vis nyheter på startsiden" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "Innebygd etikettvisning" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Vis PDF-etiketter i nettleseren fremfor å lastes ned som en fil" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "Standard etikettskriver" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "Konfigurer hvilken etikettskriver som skal være valgt som standard" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "Innebygd rapportvisning" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Vis PDF-rapporter i nettleseren fremfor å lastes ned som en fil" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "Søk i Deler" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "Vis deler i forhåndsvsningsvinduet for søk" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "Søk i Leverandørdeler" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "Vis leverandørdeler i forhåndsvisningsvinduet for søk" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "Søk i Produsentdeler" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "Vis produsentdeler i forhåndsvisningsvinduet for søk" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "Skjul Inaktive Deler" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "Ekskluder inaktive deler fra forhåndsvisningsvinduet for søk" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "Søk i kategorier" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "Vis delkategorier i forhåndsvisningsvinduet for søk" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "Søk i lagerbeholdning" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "Vis lagervarer i forhåndsvisningsvinduet for søk" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "Skjul utilgjengelige Lagervarer" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "Ekskluder lagervarer som ikke er tilgjengelige fra forhåndsvisningsvinduet for søk" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "Søk i Plasseringer" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "Vis lagerplasseringer i forhåndsvisningsvinduet for søk" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "Søk i Firma" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "Vis firma i forhåndsvsningsvinduet for søk" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "Søk i Produksjonsordrer" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "Vis produksjonsordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "Søk i Innkjøpsordrer" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "Vis innkjøpsordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "Ekskluder inaktive Innkjøpsordrer" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "Ekskluder inaktive innkjøpsordrer fra forhåndsvisningsvinduet for søk" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "Søk i Salgsordrer" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "Vis salgsordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "Ekskluder Inaktive Salgsordrer" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "Ekskluder inaktive salgsordrer fra forhåndsvisningsvinduet for søk" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "Søk i Returordrer" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "Vis returordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "Ekskluder Inaktive Returordrer" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "Ekskluder inaktive returordrer fra forhåndsvisningsvinduet for søk" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "Forhåndsvisning av søkeresultater" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "Antall resultater å vise i hver seksjon av søkeresultatsforhåndsvisningen" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "Regex-søk" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "Aktiver regulære uttrykk i søkeord" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "Helordsøk" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "Søk returnerer resultater for treff med hele ord" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "Vis antall i skjemaer" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "Vis antall tilgjengelige deler i noen skjemaer" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "Escape-knappen lukker skjemaer" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "Bruk Escape-knappen for å lukke modal-skjemaer" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "Fast navigasjonsbar" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "Navigasjonsbarens posisjon er fast på toppen av skjermen" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "Datoformat" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "Foretrukket format for å vise datoer" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Delplanlegging" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "Vis delplanleggingsinformasjon" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Lagertelling for Del" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Vis lagertellingsinformasjon for del (om lagertellingsfunksjonalitet er aktivert)" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "Tabellstrenglengde" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "Maksimal lengdegrense for tekst vist i tabeller" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "Standard etikettmal for del" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "Etikettmalen for del som velges automatisk" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "Standard etikettmal for lagervare" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "Etikettmalen for lagervare som velges automatisk" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "Standard etikettmal for lagerplassering" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "Etikettmalen for lagerplassering som velges automatisk" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "Motta feilrapporter" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "Motta varsler om systemfeil" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "Antall for prisbrudd" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Pris" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "Enhetspris på spesifisert antall" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "Endepunkt" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "Endepunktet hvor denne webhooken er mottatt" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "Navn for webhooken" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3455,101 +3510,101 @@ msgstr "Navn for webhooken" msgid "Active" msgstr "Aktiv" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "Er webhooken aktiv" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "Sjetong" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "Nøkkel for tilgang" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "Hemmelig" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "Delt hemmlighet for HMAC" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "Melding ID" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "Unik Id for denne meldingen" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "Vert" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "Verten denne meldingen ble mottatt fra" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "Tittel" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "Overskrift for denne meldingen" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "Brødtekst" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "Innholdet i meldingen" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "Endepunktet meldingen ble mottatt fra" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "Arbeidet med" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "Var arbeidet med denne meldingen ferdig?" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "Id" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Tittel" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "Publisert" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "Forfatter" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "Sammendrag" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "Les" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "Er dette nyhetselementet lest?" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3559,31 +3614,31 @@ msgstr "Er dette nyhetselementet lest?" msgid "Image" msgstr "Bilde" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "Bildefil" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "Enhetsnavn må være en gyldig identifikator" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "Enhetsnavn" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Symbol" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "Valgfritt enhetssymbol" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definisjon" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "Enhetsdefinisjon" @@ -3621,6 +3676,66 @@ msgstr "Artikler har blitt mottatt mot en returordre" msgid "Error raised by plugin" msgstr "Feil oppstått i utvidelse" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "Kjører" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "Ventende oppgaver" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "Planlagte oppgaver" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "Mislykkede oppgaver" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "Oppgave-ID" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "Unik oppgave-ID" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "Lås" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "Låsetidspunkt" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "Oppgavenavn" + +#: common/serializers.py:372 +msgid "Function" +msgstr "Funksjon" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "Funksjonsnavn" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "Argumenter" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "Oppgaveargumenter" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "Nøkkelordargumenter" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "Nøkkelordargumenter for oppgave" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3659,184 +3774,184 @@ msgstr "Deler importert" msgid "Previous Step" msgstr "Forrige trinn" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "Beskrivelse av firma" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "Beskrivelse av firmaet" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "Nettside" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "Bedriftens nettside URL" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Telefonnummer" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "Kontakt-telefonnummer" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "Kontakt e-post" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Kontakt" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "Kontaktpunkt" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "Link til ekstern bedriftsinformasjon" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "er kunde" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "Selger du varer til dette firmaet?" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "er leverandør" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "Kjøper du varer fra dette firmaet?" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "er produsent" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "Produserer dette firmaet deler?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "Standardvaluta brukt for dette firmaet" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Firma" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "Velg selskap" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "Adressetittel" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "Tittel som beskriver addressen" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "Hovedadresse" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "Sett som hovedadresse" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "Linje 1" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "Adresselinje 1" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "Linje 2" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "Adresselinje 2" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "Postnummer" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "Poststed/område" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "Postnummerets by/område" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "Delstat/provins" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "Delstat eller provins" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "Land" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "Adressens land" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "Notater til transportør" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "Notater for transportør" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "Interne fraktnotater" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "Fraktnotater for internt bruk" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "Lenke til adresseinformasjon (ekstern)" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basisdel" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "Velg del" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3848,11 +3963,11 @@ msgstr "Velg del" msgid "Manufacturer" msgstr "Produsent" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Velg produsent" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3863,67 +3978,67 @@ msgstr "Velg produsent" msgid "MPN" msgstr "MPN" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "Produsentens varenummer" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "URL for ekstern produsentdel-lenke" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "Produsentens delbeskrivelse" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Produsentdeler" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "Parameternavn" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Verdi" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "Parameterverdi" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "Enheter" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "Parameterenheter" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "Pakkeenhetene må være komptible med delens basisenhet" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "Pakkeenhet må være mer enn null" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "Den sammenkoblede produsentdelen må referere til samme basisdel" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3938,58 +4053,58 @@ msgstr "Den sammenkoblede produsentdelen må referere til samme basisdel" msgid "Supplier" msgstr "Leverandør" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Velg leverandør" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "Leverandørens lagerbeholdningsenhet" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "Velg produsentdel" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "URL for ekstern leverandørdel-lenke" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "Leverandørens delbeskrivelse" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "Notat" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "grunnkostnad" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimum betaling (f.eks. lageravgift)" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Emballasje" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "Delemballasje" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3999,27 +4114,27 @@ msgstr "Delemballasje" msgid "Pack Quantity" msgstr "Pakkeantall" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "Totalt antall i en enkelt pakke. La være tom for enkeltenheter." -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "flere" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "Bestill flere" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "Antall tilgjengelig fra leverandør" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "Tilgjengelighet oppdatert" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "Dato for siste oppdatering av tilgjengelighetsdata" @@ -4081,10 +4196,10 @@ msgstr "Last ned bilde fra URL" msgid "Delete image" msgstr "Slett bilde" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4099,7 +4214,7 @@ msgstr "Kunde" msgid "Uses default currency" msgstr "Bruker standardvaluta" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4113,11 +4228,11 @@ msgstr "Telefon" #: company/templates/company/company_base.html:205 #: part/templates/part/part_base.html:528 msgid "Remove Image" -msgstr "Fjern Bilde" +msgstr "" #: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" -msgstr "Fjern tilknyttet bilde fra dette firmaet" +msgstr "" #: company/templates/company/company_base.html:208 #: part/templates/part/part_base.html:531 @@ -4129,12 +4244,12 @@ msgstr "Fjern" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "Last opp bilde" +msgstr "" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "Last ned Bilde" +msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 @@ -4317,7 +4432,7 @@ msgstr "Nytt Parameter" #: company/templates/company/manufacturer_part.html:206 #: templates/js/translated/part.js:1422 msgid "Add Parameter" -msgstr "Legg til Parameter" +msgstr "" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" @@ -4344,7 +4459,7 @@ msgid "Addresses" msgstr "Adresser" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4433,20 +4548,20 @@ msgstr "Legg til Prisbrudd" #: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" -msgstr "Leverandørdel-QR-kode" +msgstr "" #: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" -msgstr "Koble strekkode til Leverandørdel" +msgstr "" #: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" -msgstr "Oppdater Delens Tilgjengelighet" +msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4485,6 +4600,10 @@ msgstr "Firmaer" msgid "New Company" msgstr "Nytt Firma" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "Etikettnavn" @@ -4501,7 +4620,7 @@ msgstr "Etikett" msgid "Label template file" msgstr "Etikett-malfil" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "Aktivert" @@ -4525,7 +4644,7 @@ msgstr "Høyde [mm]" msgid "Label height, specified in mm" msgstr "Etiketthøyde, spesifisert i mm" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "Filnavnmønster" @@ -4539,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "Søkefiltre (kommaseparert liste over nøkkel=verdi-par)" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "Filtre" @@ -4557,7 +4676,108 @@ msgstr "QR-kode" msgid "QR code" msgstr "QR-kode" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "Ukjent" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4570,7 +4790,7 @@ msgstr "Total pris" msgid "No matching purchase order found" msgstr "Ingen samsvarende innkjøpsordre funnet" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4584,7 +4804,7 @@ msgstr "Ingen samsvarende innkjøpsordre funnet" msgid "Purchase Order" msgstr "Innkjøpsordre" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4593,192 +4813,188 @@ msgstr "Innkjøpsordre" msgid "Return Order" msgstr "Returordre" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "Ukjent" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "Total pris for denne ordren" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "Ordrevaluta" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "Valuta for denne ordren (la stå tom for å bruke firmastandard)" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "Kontakten samsvarer ikke med valgt firma" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "Ordrebeskrivelse (valgfritt)" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "Velg prosjektkode for denne ordren" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "Lenke til ekstern side" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Forventet dato for levering av ordre. Bestillingen vil være forfalt etter denne datoen." -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "Opprettet av" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "Bruker eller gruppe ansvarlig for ordren" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "Kontaktpunkt for denne ordren" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "Selskapsadresse for denne ordren" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "Ordrereferanse" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "Status for innkjøpsordre" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "Firma som varene blir bestilt fra" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "Leverandørreferanse" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "Leverandørens ordrereferanse" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "mottatt av" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "Sendt dato" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "Dato bestillingen ble sendt" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "Dato ordre ble fullført" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "Delleverandør må matche PO-leverandør" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "Mengde må være positiv" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "Firma som varene selges til" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "Kundereferanse " -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "Kundens ordrereferanse" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "Forsendelsesdato" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "sendt av" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "Bestillingen kan ikke fullføres da ingen deler er tilordnet" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "Kun en åpen ordre kan merkes som fullført" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "Bestillingen kan ikke fullføres da det finnes ufullstendige forsendelser" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "Denne ordren kan ikke fullføres da det fortsatt er ufullstendige artikler" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "Antall" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "Linjereferanse" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "Linjenotater" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "Måldato for denne linjen (la stå tomt for å bruke måldatoen fra ordren)" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "Linjeelementbeskrivelse (valgfritt)" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "Kontekst" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "Ytterligere kontekst for denne linjen" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "Enhetspris" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "Delens leverandør må samsvare med leverandør" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "slettet" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "Ordre" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "Leverandørdel" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4788,325 +5004,325 @@ msgstr "Leverandørdel" msgid "Received" msgstr "Mottatt" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "Antall enheter mottatt" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Innkjøpspris" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "Enhet-innkjøpspris" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "Hvor vil innkjøper at artikkelen skal lagres?" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "Virtuell del kan ikke tildeles salgsordre" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "Kun salgbare deler kan tildeles en salgsordre" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Salgspris" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "Enhets-salgspris" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "Sendt antall" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "Dato for forsendelse" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "Leveringsdato" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "Dato for levering av forsendelse" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "Sjekket Av" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "Brukeren som sjekket forsendelsen" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Forsendelse" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "Forsendelsesnummer" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "Sporingsnummer" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "Sporingsinformasjon for forsendelse" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "Fakturanummer" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "Referansenummer for tilknyttet faktura" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "Forsendelsen er allerede sendt" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "Forsendelsen har ingen tildelte lagervarer" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "Lagervarer er ikke blitt tildelt" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "Kan ikke tildele lagervare til en linje med annen del" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "Kan ikke tildele lagerbeholdning til en linje uten en del" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Tildelingsantall kan ikke overstige tilgjengelig lagerbeholdning" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "Antall må være 1 for serialisert lagervare" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "Salgsordre samsvarer ikke med forsendelse" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "Forsendelsen samsvarer ikke med salgsordre" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "Linje" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "Forsendelsesreferanse for salgsordre" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "Artikkel" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "Velg lagervare å tildele" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "Angi lagertildelingsmengde" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "Returordre-referanse" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "Firmaet delen skal returneres fra" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "Returordrestatus" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "Kun serialiserte artikler kan tilordnes en Returordre" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "Velg artikkel som skal returneres fra kunde" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "Mottatt Dato" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "Datoen denne returartikkelen ble mottatt" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Utfall" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "Utfall for dette linjeelementet" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "Kostnad forbundet med retur eller reparasjon for dette linjeelementet" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "Ordren kan ikke kanselleres" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "Tillat ordre å lukkes med ufullstendige linjeelementer" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "Ordren har ufullstendige linjeelementer" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "Ordren er ikke åpen" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "Innkjøpsvaluta" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "Leverandørdel må angis" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "Innkjøpsordre må angis" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "Leverandør må samsvare med innkjøpsordre" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "Innkjøpsordre må samsvare med leverandør" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "Ordrelinje" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "Linjeelementet samsvarer ikke med innkjøpsordre" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "Velg lagerplassering for mottatte enheter" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "Angi batchkode for innkommende lagervarer" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "Angi serienummer for innkommende lagervarer" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Strekkode" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "Skannet strekkode" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "Strekkode allerede i bruk" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "Heltallsverdi må angis for sporbare deler" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "Linjeelementer må være oppgitt" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "Målplassering må angis" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "Angitte strekkodeverdier må være unike" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "Valuta for salgspris" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "Ingen forsendelsesopplysninger oppgitt" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "Linjeelement er ikke knyttet til denne ordren" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "Mengden må være positiv" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "Skriv inn serienummer for å tildele" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "Forsendelsen er allerede sendt" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "Forsendelsen er ikke knyttet til denne ordren" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "Ingen treff funnet for følgende serienummer" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "Følgende serienummer er allerede tildelt" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "Returordrelinje" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "Linjeelementet samsvarer ikke med returordre" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "Linjeelementet er allerede mottatt" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "Artikler kan bare mottas mot ordrer som pågår" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "Valuta for linje" @@ -5235,11 +5451,11 @@ msgstr "Total kostnad kunne ikke beregnes" #: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" -msgstr "Innkjøpsordre-QR-kode" +msgstr "" #: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" -msgstr "Koble strekkode til Innkjøpsordre" +msgstr "" #: order/templates/order/order_wizard/match_fields.html:9 #: part/templates/part/import_wizard/ajax_match_fields.html:9 @@ -5290,8 +5506,8 @@ msgstr "Duplikatvalg" #: 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5428,11 +5644,11 @@ msgstr "Total kostnad" #: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" -msgstr "Returordre-QR-kode" +msgstr "" #: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" -msgstr "Koble strekkode til Returordre" +msgstr "" #: order/templates/order/return_order_sidebar.html:5 msgid "Order Details" @@ -5464,11 +5680,11 @@ msgstr "Fullførte forsendelser" #: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" -msgstr "Salgsordre-QR-kode" +msgstr "" #: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" -msgstr "Koble strekkode til Salgsordre" +msgstr "" #: order/templates/order/sales_order_detail.html:18 msgid "Sales Order Items" @@ -5510,13 +5726,13 @@ msgstr "Oppdaterte {part} enhetspris to {price}" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "Oppdaterte {part} enhetspris til {price} og antall til {qty}" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "Del-ID" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "Delnavn" @@ -5524,20 +5740,20 @@ msgstr "Delnavn" msgid "Part Description" msgstr "Delbeskrivelse" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "IPN" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Revisjon" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Nøkkelord" @@ -5562,11 +5778,11 @@ msgstr "Standard plasserings-ID" msgid "Default Supplier ID" msgstr "Standard leverandør-ID" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variant av" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimal lagerbeholdning" @@ -5576,33 +5792,26 @@ msgstr "Minimal lagerbeholdning" msgid "In Stock" msgstr "På lager" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "I bestilling" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "Brukt i" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "Produseres" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "Minimal kostnad" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "Maksimal kostnad" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "Overordnet ID" @@ -5615,7 +5824,7 @@ msgstr "Overordnet navn" msgid "Category Path" msgstr "Sti til kategori" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5638,51 +5847,51 @@ msgstr "BOM artikkel-ID" msgid "Parent IPN" msgstr "Overodnet IPN" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "Del -IPN" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Minstepris" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Makspris" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "Innkommende innkjøpsordre" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "Utgående salgsordre" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "Lagervarer produsert av en produksjonsordre" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "Lagervarer påkrevd for produksjonsordre" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "Gyldig" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "Godkjenn hele Stykklisten" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "Dette alternativet må være valgt" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Standard plassering" @@ -5691,380 +5900,375 @@ msgstr "Standard plassering" msgid "Total Stock" msgstr "Total lagerbeholdning" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "Tilgjengelig lagerbeholdning" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "Sett inn antall for prisberegning" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Delkategori" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "Delkategorier" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "Standardplassering for deler i denne kategorien" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Strukturell" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Deler kan ikke tilordnes direkte til en strukturell kategori, men kan tilordnes til underkategorier." -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "Standard nøkkelord" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "Standard nøkkelord for deler i denne kategorien" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Ikon" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "Ikon (valgfritt)" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "Du kan ikke gjøre denne delkategorien strukturell fordi noen deler allerede er tilordnet den!" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "Ugyldig valg for overordnet del" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "Delen '{self}' kan ikke brukes i BOM for '{parent}' (rekursiv)" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "Delen '{parent}' er brukt i BOM for '{self}' (rekursiv)" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "IPN må samsvare med regex-mønsteret {pattern}" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "Lagervare med dette serienummeret eksisterer allerede" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "Duplikat av internt delnummer er ikke tillatt i delinnstillinger" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "Del med dette Navnet, internt delnummer og Revisjon eksisterer allerede." -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "Deler kan ikke tilordnes strukturelle delkategorier!" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "Delnavn" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "Er Mal" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "Er delen en maldel?" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "Er delen en variant av en annen del?" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "Delbeskrivelse (valgfritt)" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "Del-nøkkelord for å øke synligheten i søkeresultater" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "Kategori" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "Delkategori" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "Internt delnummer" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "Delrevisjon eller versjonsnummer" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "Hvor er denne artikkelen vanligvis lagret?" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Standard leverandør" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "Standard leverandørdel" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "Standard utløp" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "Utløpstid (i dager) for lagervarer av denne delen" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "Minimum tillatt lagernivå" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "Måleenheter for denne delen" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "Kan denne delen bygges fra andre deler?" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "Kan denne delen brukes til å bygge andre deler?" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "Har denne delen sporing av unike artikler?" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "Kan denne delen kjøpes inn fra eksterne leverandører?" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "Kan denne delen selges til kunder?" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "Er denne delen aktiv?" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "Er dette en virtuell del, som et softwareprodukt eller en lisens?" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "Kontrollsum for BOM" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "Lagret BOM-kontrollsum" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "Stykkliste sjekket av" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "Stykkliste sjekket dato" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "Opprettingsbruker" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "Eier ansvarlig for denne delen" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Siste lagertelling" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "Selg flere" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "Valuta som brukes til å bufre prisberegninger" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "Minimal BOM-kostnad" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "Minste kostnad for komponentdeler" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "Maksimal BOM-kostnad" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "Maksimal kostnad for komponentdeler" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "Minimal innkjøpskostnad" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "Minimal historisk innkjøpskostnad" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "Maksimal innkjøpskostnad" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "Maksimal historisk innkjøpskostnad" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "Minimal intern pris" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "Minimal kostnad basert på interne prisbrudd" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "Maksimal intern pris" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "Maksimal kostnad basert på interne prisbrudd" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "Minimal leverandørpris" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "Minimumspris for del fra eksterne leverandører" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "Maksimal leverandørpris" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "Maksimalpris for del fra eksterne leverandører" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "Minimal Variantkostnad" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "Beregnet minimal kostnad for variantdeler" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "Maksimal Variantkostnad" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "Beregnet maksimal kostnad for variantdeler" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "Overstyr minstekostnad" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "Overstyr maksimal kostnad" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "Beregnet samlet minimal kostnad" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "Beregnet samlet maksimal kostnad" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "Minimal salgspris" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "Minimal salgspris basert på prisbrudd" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "Maksimal Salgspris" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "Maksimal salgspris basert på prisbrudd" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "Minimal Salgskostnad" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "Minimal historisk salgspris" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "Maksimal Salgskostnad" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "Maksimal historisk salgspris" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "Del for varetelling" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "Antall" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "Antall individuelle lagerenheter på tidspunkt for varetelling" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "Total tilgjengelig lagerbeholdning på tidspunkt for varetelling" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6076,322 +6280,318 @@ msgstr "Total tilgjengelig lagerbeholdning på tidspunkt for varetelling" msgid "Date" msgstr "Dato" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "Dato for utført lagertelling" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "Flere notater" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "Bruker som utførte denne lagertellingen" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "Minimal lagerkostnad" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "Estimert minimal kostnad for lagerbeholdning" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "Maksimal lagerkostnad" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "Estimert maksimal kostnad for lagerbeholdning" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Rapport" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "Lagertellingsrapportfil (generert internt)" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Antall deler" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "Antall deler dekket av varetellingen" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "Bruker som forespurte varetellingsrapporten" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "Testmaler kan bare bli opprettet for sporbare deler" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "Test med dette navnet finnes allerede for denne delen" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "Testnavn" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "Angi et navn for testen" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "Testbeskrivelse" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "Legg inn beskrivelse for denne testen" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Påkrevd" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "Er det påkrevd at denne testen bestås?" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "Krever verdi" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "Krever denne testen en verdi når det legges til et testresultat?" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "Krever vedlegg" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "Krever denne testen et filvedlegg når du legger inn et testresultat?" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "Sjekkboksparameter kan ikke ha enheter" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "Sjekkboksparameter kan ikke ha valg" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "Valg må være unike" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "Navn på parametermal må være unikt" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "Parameternavn" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "Fysisk enheter for denne parameteren" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "Parameterbeskrivelse" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "Sjekkboks" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "Er dette parameteret en sjekkboks?" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "Valg" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "Gyldige valg for denne parameteren (kommaseparert)" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "Ugyldig valg for parameterverdi" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "Overordnet del" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Parametermal" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "Data" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "Parameterverdi" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Standardverdi" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "Standard Parameterverdi" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "Del-ID eller delnavn" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "Unik del-ID-verdi" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "Delens interne delnummerverdi" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "Nivå" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "BOM-nivå" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "BOM-artikkel" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "Velg overordnet del" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "Underordnet del" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "Velg del som skal brukes i BOM" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "BOM-antall for denne BOM-artikkelen" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "Denne BOM-artikkelen er valgfri" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "Denne BOM-artikkelen er forbruksvare (den spores ikke i produksjonsordrer)" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Svinn" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Forventet produksjonssvinn (absolutt eller prosent)" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "BOM-artikkelreferanse" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "BOM-artikkelnotater" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "Kontrollsum" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "BOM-linje kontrollsum" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Godkjent" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "Denne BOM-artikkelen er godkjent" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "Arves" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Denne BOM-artikkelen er arvet fra stykkliste for variantdeler" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Tillat Varianter" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Lagervarer for variantdeler kan brukes for denne BOM-artikkelen" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "Antall må være heltallsverdi for sporbare deler" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "Underordnet del må angis" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "BOM-artikkel erstatning" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "Erstatningsdel kan ikke være samme som hoveddelen" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "Overordnet BOM-artikkel" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "Erstatningsdel" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "Del 1" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "Del 2" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "Velg relatert del" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "Del-forhold kan ikke opprettes mellom en del og seg selv" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "Duplikatforhold eksisterer allerede" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "Innkjøpsvaluta for lagervaren" @@ -6487,197 +6687,197 @@ msgstr "Produsentdel som matcher dette MPN-et, finnes allerede" msgid "Supplier part matching this SKU already exists" msgstr "Leverandørdel som matcher denne SKU-en, finnes allerede" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Dupliser del" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "Kopier innledende data fra en annen del" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Innledende lagerbeholdning" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "Lag en del med innledende lagermengde" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "Leverandøropplysninger" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "Legg til innledende leverandørinformasjon for denne delen" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "Kopier kategoriparametre" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "Kopier parametermaler fra valgt delkategori" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "Eksisterende bilde" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "Filnavn for et eksisterende del-bilde" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "Bildefilen finnes ikke" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "Begrens lagerbeholdningsrapport til en bestemt del og enhver variant av delen" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "Begrens lagerbeholdningsrapport til en bestemt delkategori og alle underkategorier" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "Begrens lagerbeholdningsrapport til en bestemt plasering og eventuelle underplasseringer" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "Ekskluder ekstern lagerbeholdning" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "Ekskluder lagervarer i eksterne lokasjoner" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "Generer rapport" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "Genererer rapport som inneholder beregnede lagerdata" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "Oppdater deler" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "Oppdater spesifiserte deler med beregnede lagerbeholdningsdata" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "Lagerbeholdningsfunksjonalitet er ikke aktivert" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "Overstyr beregnet verdi for minimumspris" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "Valuta for minstepris" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "Overstyr beregnet verdi for maksimal pris" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "Valuta for maksimal pris" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "Oppdater" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "Oppdater priser for denne delen" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "Kan ikke konvertere fra gitte valutaer til {default_currency}" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "Minsteprisen kan ikke være større enn maksimal pris" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "Maksimal pris kan ikke være mindre enn minstepris" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "Velg del å kopiere BOM fra" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "Fjern eksisterende data" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "Fjern eksisterende BOM-artikler før kopiering" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "Inkluder arvede" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "Inkluder BOM-artikler som er arvet fra maldeler" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "Hopp over ugyldige rader" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "Aktiver dette alternativet for å hoppe over ugyldige rader" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "Kopier erstatningsdeler" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "Kopier erstatningsdeler når BOM-elementer dupliseres" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "Nullstill eksisterende BOM" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "Fjern eksisterende BOM-artikler før opplastning" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "Ingen del-kolonne angitt" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "Flere samsvarende deler funnet" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "Ingen samsvarende del funnet" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "Delen er ikke betegnet som en komponent" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "Antall ikke oppgitt" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "Ugyldig antall" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "Minst en BOM-artikkel kreves" @@ -6838,7 +7038,7 @@ msgid "Add stocktake information" msgstr "Legg til lagertellingsinformasjon" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -6940,15 +7140,15 @@ msgstr "Deleprodusenter" #: part/templates/part/detail.html:659 msgid "Related Part" -msgstr "Relatert Del" +msgstr "" #: part/templates/part/detail.html:667 msgid "Add Related Part" -msgstr "Legg til relatert del" +msgstr "" #: part/templates/part/detail.html:752 msgid "Add Test Result Template" -msgstr "Legg til Testresultatmal" +msgstr "" #: part/templates/part/import_wizard/ajax_part_upload.html:29 #: part/templates/part/import_wizard/part_upload.html:14 @@ -7124,31 +7324,27 @@ msgstr "Søk etter serienummer" #: part/templates/part/part_base.html:444 msgid "Part QR Code" -msgstr "Del-QR-kode" +msgstr "" #: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" -msgstr "Koble strekkode til Del" - -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "del" +msgstr "" #: part/templates/part/part_base.html:512 msgid "Calculate" -msgstr "Beregn" +msgstr "" #: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" -msgstr "Fjern tilknyttet bilde fra denne delen" +msgstr "" #: part/templates/part/part_base.html:580 msgid "No matching images found" -msgstr "Ingen samsvarende bilder funnet" +msgstr "" #: part/templates/part/part_base.html:676 msgid "Hide Part Details" -msgstr "Skjul Deldetaljer" +msgstr "" #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:76 #: part/templates/part/prices.html:227 templates/js/translated/pricing.js:485 @@ -7248,7 +7444,7 @@ msgstr "Overstyr delprising" msgid "Edit" msgstr "Rediger" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7321,7 +7517,7 @@ msgstr "Legg til salgsprisbrudd" #: part/templates/part/pricing_javascript.html:24 msgid "Update Pricing" -msgstr "Oppdater priser" +msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/part.js:704 #: templates/js/translated/part.js:2140 templates/js/translated/part.js:2142 @@ -7402,11 +7598,15 @@ msgstr "Bilde for del ikke funnet" msgid "Part Pricing" msgstr "Delprising" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "Ingen handling spesifisert" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Ingen samsvarende handling funnet" @@ -7464,7 +7664,7 @@ msgstr "Strekkoden samsvarer ikke med eksisterende lagervare" msgid "Stock item does not match line item" msgstr "Lagervare samsvarer ikke med linjeelement" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "Utilstrekkelig lagerbeholdning" @@ -7563,6 +7763,18 @@ msgstr "Antall å tildele" msgid "Label printing failed" msgstr "Utskrift av etikett mislyktes" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "InvenTree-strekkoder" @@ -7575,6 +7787,7 @@ msgstr "Gir innebygd støtte for strekkoder" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7643,6 +7856,22 @@ msgstr "Feilsøkingsmodus" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "Aktiver feilsøkingsmodus - returnerer rå HTML i stedet for PDF" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "Sidestørrelse på etikett-arket" @@ -7663,7 +7892,7 @@ msgstr "Kantlinjer" msgid "Print a border around each label" msgstr "Skriv ut en kant rundt hver etikett" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "Liggende" @@ -7735,84 +7964,112 @@ msgstr "Gir støtte for å skanne TME-strekkoder" msgid "The Supplier which acts as 'TME'" msgstr "Leverandøren som fungerer som \"TME\"" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" -msgstr "Tillatelse nektet: bare ansatt-brukere kan installere utvidelser" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" +msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "Installasjon av utvidelse vellykket" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "Installerte utvidelsen til {path}" -#: plugin/installer.py:203 -msgid "Plugin installation failed" -msgstr "Installasjon av utvidelse mislyktes" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" +msgstr "" -#: plugin/models.py:29 +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" +msgstr "" + +#: plugin/models.py:30 msgid "Plugin Configuration" msgstr "Konfigurasjon av utvidelse" -#: plugin/models.py:30 +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "Konfigurasjon av utvidelser" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "Nøkkel" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "Utvidelsens \"Key\"" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "Navn på utvidelsen" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "Pakkenavn" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "Er utvidelsen aktiv" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "Installert" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "Eksempel-utvidelse" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "Innebygd utvidelse" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Utvidelse" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "Metode" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "Ingen forfatter funnet" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "Utvidensen '{p}' er ikke kompatibel med nåværende InvenTree-versjon {v}" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "Utvidelsen krever minst versjon {v}" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "Utvidelsen krever maks versjon {v}" @@ -7857,70 +8114,84 @@ msgstr "Eksempel valutakonverterings-utvidelse" msgid "InvenTree Contributors" msgstr "InvenTree-bidragsytere" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "Kilde-URL" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Kilde for pakken - dette kan være et egendefinert register eller en VCS-sti" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "Pakkenavn" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Navn på utvidelsespakke – kan også inneholde en versjonsindikator" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "Versjon" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "Bekreft installasjon av utvidelse" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Dette vil installere denne utvidelsen nå i gjeldende instans. Instansen vil gå i vedlikehold." -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "Installasjonen ble ikke bekreftet" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "Enten pakkenavn eller URL må angis" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "Full omlasting" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "Utfør en full omlasting av utvidelsesregisteret" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "Tvangsomlasting" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "Tving en omlasting av utvidelsesregisteret, selv om det allerede er lastet" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "Hent inn utvidelser" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "Hent inn utvidelser og legg dem til i registeret" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "Aktivér utvidelse" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "Aktivér denne utvidelsen" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "Ingen gyldige objekter angitt for mal" @@ -7950,103 +8221,103 @@ msgstr "Legal" msgid "Letter" msgstr "Letter" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "Malnavn" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "Rapportmalfil" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "Beskrivelse av rapportmal" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "Rapportrevisjonsnummer (øker automatisk)" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "Sidestørrelse for PDF-rapporter" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "Generer rapport i landskapsorientering" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "Mønster for å generere rapportfilnavn" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "Rapportmal er aktiver" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Lagervare-søkefilter (kommaseparert liste over nøkkel=verdi-par)" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "Inkluder installerte tester" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "Inkluder testresultater for lagervarer installert i sammenstilt artikkel" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "Produksjonsfiltre" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Produksjons-søkefilter (kommaseparert liste over nøkkel=verdi-par" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "Delfiltre" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Del-søkefilter (kommaseparert liste over nøkkel=verdi-par" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "Innkjøpsordre-søkefilter" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "Salgsordre-søkefilter" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "Returordre-søkefilter" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "Snutt" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "Rapportsnuttfil" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "Filbeskrivelse for snutt" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "Ressurs" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "Rapportressursfil" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "Ressursfilbeskrivelse" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "spørringsfiltre for lagerplassering (kommadelt liste av nøkkel=verdi-par)" @@ -8087,9 +8358,9 @@ msgstr "Total" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8113,12 +8384,12 @@ msgid "Test Results" msgstr "Testresultater" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "Test" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "Resultat" @@ -8144,32 +8415,32 @@ msgid "Installed Items" msgstr "Installerte artikler" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Serienummer" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "Asset-filen eksisterer ikke" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "Bildefil ikke funnet" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "part_image-taggen krever en Part-instans" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "company_image-taggen krever en Company-instans" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "Plasserings-ID" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "Plasseringsnavn" @@ -8178,56 +8449,56 @@ msgstr "Plasseringsnavn" msgid "Location Path" msgstr "Plasserings-sti" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "Lagervare-ID" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "Statuskode" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "Leverandørdel-ID" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "Leverandør-ID" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "Leverandørnavn" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "Kunde-ID" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Installert i" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "Produksjons-ID" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "Salgsordre-ID" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "Innkjøpsordre-ID" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "Gjennomgang kreves" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "Slett når oppbrukt" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8237,56 +8508,56 @@ msgstr "Utløpsdato" msgid "External Location" msgstr "Ekstern plassering" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "Del-tre" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "Utløpsdato før" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "Utløpsdato etter" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Foreldet" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "Antall kreves" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "Gyldig del må oppgis" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "Oppgitt leverandørdel eksisterer ikke" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "Leverandørdelen har en pakkestørrelse definert, men flagget \"use_pack_size\" er ikke satt" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Serienumre kan ikke angis for en ikke-sporbar del" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "Lagerplasseringstype" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "Lagerplasseringstyper" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "Standard ikom for alle plasseringer som ikke har satt et ikon (valgfritt)" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8298,12 +8569,12 @@ msgstr "Lagerplassering" msgid "Stock Locations" msgstr "Lagerplasseringer" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Eier" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "Velg eier" @@ -8333,225 +8604,225 @@ msgstr "Lagerplasseringstype for denne plasseringen" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "De kan ikke gjøre denne plasseringen strukturell, da noen lagervarer allerede er plassert i den!" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "Lagervarer kan ikke plasseres i strukturelle plasseringer!" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "Lagervare kan ikke opprettes for virtuelle deler" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "Deltype ('{self.supplier_part.part}') må være {self.part}" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "Antall må være 1 for produkt med et serienummer" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Serienummeret kan ikke angis hvis antall er større enn 1" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "Elementet kan ikke tilhøre seg selv" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "Elementet må ha en produksjonsrefereanse om is_building=True" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "Produksjonsreferanse peker ikke til samme del-objekt" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "Overordnet lagervare" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "Basisdel" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "Velg en tilsvarende leverandørdel for denne lagervaren" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "Hvor er denne lagervaren plassert?" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "Inpakningen denne lagervaren er lagret i" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "Er denne artikkelen montert i en annen artikkel?" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "Serienummer for denne artikkelen" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "Batchkode for denne lagervaren" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "Lagerantall" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "Kildeproduksjon" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "Produksjon for denne lagervaren" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "Brukt av" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "Produksjonsordren som brukte denne lagervaren" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "Kildeinnkjøpsordre" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "Innkjøpsordre for denne lagervaren" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "Tildelt Salgsordre" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Utløpsdato for lagervare. Lagerbeholdning vil bli ansett som utløpt etter denne datoen" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "Slett når oppbrukt" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "Slett lagervaren når beholdningen er oppbrukt" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "Innkjøpspris per enhet på kjøpstidspunktet" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "Konvertert til del" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "Delen er ikke angitt som sporbar" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "Antall må være heltall" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "Antall kan ikke overstige tilgjengelig lagerbeholdning ({self.quantity})" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "Serienumre må være en liste over tall" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "Antallet stemmer ikke overens med serienumrene" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "Seriernummer eksisterer allerede" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "Lagervare har blitt tildelt en salgsordre" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "Lagervare er montert i en annen artikkel" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "Lagervare inneholder andre artikler" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "Lagervare har blitt tildelt til en kunde" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "Lagervare er for tiden i produksjon" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "Serialisert lagerbeholdning kan ikke slås sammen" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "Duplisert lagervare" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "Lagervarer må referere til samme del" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "Lagervarer må referere til samme leverandørdel" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "Lagerstatuskoder må være like" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "Lagervare kan ikke flyttes fordi den ikke er på lager" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "Oppføringsnotater" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "Verdi må angis for denne testen" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "Vedlegg må lastes opp for denne testen" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "Testnavn" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "Testresultat" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "Testens verdi" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "Vedlegg til testresultat" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "Testnotater" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "Serienummeret er for høyt" @@ -8559,157 +8830,161 @@ msgstr "Serienummeret er for høyt" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "Bruk pakningsstørrelse når du legger til: antall definert er antall pakker" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "Innkjøpspris for denne lagervaren, per enhet eller forpakning" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "Angi antall lagervarer som skal serialiseres" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "Antall kan ikke overstige tilgjengelig lagerbeholdning ({q})" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "Angi serienummer for nye artikler" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "Til Lagerplassering" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "Valgfritt notatfelt" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "Serienummer kan ikke tilordnes denne delen" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "Velg lagervare å montere" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "Antall å installere" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "Angi antallet elementer som skal installeres" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "Legg til transaksjonsnotat (valgfritt)" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "Antall å installere må være minst 1" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "Lagervaren er utilgjengelig" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "Valgt del er ikke i stykklisten" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "Antall å installere må ikke overskride tilgjengelig antall" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "Lagerplassering for den avinstallerte artikkelen" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "Velg del å konvertere lagervare til" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "Valgt del er ikke et gyldig alternativ for konvertering" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "Kan ikke konvertere lagerprodukt med tildelt leverandørdel" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "Lagerplassering for returnert artikkel" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "Velg lagervarer for å endre status" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "Ingen lagervarer valgt" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "Delen må være salgbar" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "Artikkelen er tildelt en salgsordre" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "Artikkelen er tildelt en produksjonsordre" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "Kunde å tilordne lagervarer" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "Valgt firma er ikke en kunde" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "Lagervare-tildelignsnotater" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "En liste av lagervarer må oppgis" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "Notater om lagersammenslåing" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "Tillat forskjellige leverandører" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "Tillat lagervarer med forskjellige leverandørdeler å slås sammen" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "Tillat forskjellig status" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "Tillat lagervarer med forskjellige statuskoder å slås sammen" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "Minst to lagervarer må oppgis" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "Lagervare primærnøkkel verdi" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "Lagervare statuskode" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "Lager transaksjonsnotater" @@ -8760,7 +9035,7 @@ msgstr "Slett alle testresultater for denne lagervaren" #: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" -msgstr "Legg til testresultat" +msgstr "" #: stock/templates/stock/item_base.html:33 msgid "Locate stock item" @@ -8846,7 +9121,7 @@ msgid "Delete stock item" msgstr "Slett lagervare" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Produksjon" @@ -8912,7 +9187,7 @@ msgid "Available Quantity" msgstr "Tilgjengelig antall" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "Ingen plassering satt" @@ -8946,19 +9221,19 @@ msgstr "Ingen lagertelling utført" #: stock/templates/stock/item_base.html:507 #: templates/js/translated/stock.js:1922 msgid "stock item" -msgstr "lagervare" +msgstr "" #: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" -msgstr "Rediger Lagerstatus" +msgstr "" #: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" -msgstr "Lagervare-QR-kode" +msgstr "" #: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" -msgstr "Koble strekkode til Lagervare" +msgstr "" #: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." @@ -8974,11 +9249,11 @@ msgstr "Denne handlingen er vanskelig å omgjøre" #: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" -msgstr "Konverter Lagervare" +msgstr "" #: stock/templates/stock/item_base.html:662 msgid "Return to Stock" -msgstr "Returner til Lager" +msgstr "" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." @@ -9057,19 +9332,19 @@ msgstr "Ny plassering" #: stock/templates/stock/location.html:289 #: templates/js/translated/stock.js:2543 msgid "stock location" -msgstr "lagerplassering" +msgstr "" #: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" -msgstr "Skannet lagerbeholder til denne plasseringen" +msgstr "" #: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" -msgstr "Lagerplassering-QR-kode" +msgstr "" #: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" -msgstr "Koble strekkode til Lagerplassering" +msgstr "" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." @@ -9143,71 +9418,71 @@ msgstr "Indeks" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "Abonnerte deler" +msgstr "" #: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "Abonnerte kategorier" +msgstr "" #: templates/InvenTree/index.html:62 msgid "Latest Parts" -msgstr "Siste deler" +msgstr "" #: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" -msgstr "BOM venter godkjenning" +msgstr "" #: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "Nylig oppdatert" +msgstr "" #: templates/InvenTree/index.html:134 msgid "Depleted Stock" -msgstr "Oppbrukt lagerbeholdning" +msgstr "" #: templates/InvenTree/index.html:148 msgid "Required for Build Orders" -msgstr "Påkrevd for produksjonsordre" +msgstr "" #: templates/InvenTree/index.html:156 msgid "Expired Stock" -msgstr "Utløpt lagerbeholdning" +msgstr "" #: templates/InvenTree/index.html:172 msgid "Stale Stock" -msgstr "Gammel lagerbeholdning" +msgstr "" #: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "Produksjonsordre som pågår" +msgstr "" #: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "Forfalte Produksjonsordre" +msgstr "" #: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" -msgstr "Utestående innkjøpsordre" +msgstr "" #: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" -msgstr "Forfalte innkjøpsordre" +msgstr "" #: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" -msgstr "Utestående salgsordre" +msgstr "" #: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" -msgstr "Forfalte salgsordre" +msgstr "" #: templates/InvenTree/index.html:299 msgid "InvenTree News" -msgstr "InvenTree-nyheter" +msgstr "" #: templates/InvenTree/index.html:301 msgid "Current News" -msgstr "Aktuelle nyheter" +msgstr "" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" @@ -9237,11 +9512,11 @@ msgstr "Varlser" #: templates/InvenTree/notifications/notifications.html:38 msgid "No unread notifications found" -msgstr "Ingen uleste varsler funnet" +msgstr "" #: templates/InvenTree/notifications/notifications.html:58 msgid "No notification history found" -msgstr "Ingen varsellogg funnet" +msgstr "" #: templates/InvenTree/notifications/notifications.html:65 msgid "Delete all read notifications" @@ -9250,7 +9525,7 @@ msgstr "Slett alle leste varsler" #: templates/InvenTree/notifications/notifications.html:89 #: templates/js/translated/notification.js:85 msgid "Delete Notification" -msgstr "Slett varsel" +msgstr "" #: templates/InvenTree/notifications/sidebar.html:8 msgid "Inbox" @@ -9413,11 +9688,6 @@ msgstr "Melding" msgid "Plugin information" msgstr "Informasjon om utvidelse" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "Versjon" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "ingen versjonsinformasjon angitt" @@ -9546,112 +9816,112 @@ msgstr "Rediger innstilling" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" -msgstr "Rediger utvidelsesinnstillinger" +msgstr "" #: templates/InvenTree/settings/settings_js.html:60 msgid "Edit Notification Setting" -msgstr "Rediger varslingsinnstilling" +msgstr "" #: templates/InvenTree/settings/settings_js.html:63 msgid "Edit Global Setting" -msgstr "Rediger global innstilling" +msgstr "" #: templates/InvenTree/settings/settings_js.html:65 msgid "Edit User Setting" -msgstr "Rediger brukerinnstilling" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:49 msgid "Rate" -msgstr "Vurder" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Slett" #: templates/InvenTree/settings/settings_staff_js.html:95 msgid "Edit Custom Unit" -msgstr "Rediger egendefinert enhet" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:110 msgid "Delete Custom Unit" -msgstr "Slett egendefinert enhet" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:124 msgid "New Custom Unit" -msgstr "Ny egendefinert enhet" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" -msgstr "Ingen prosjektkoder funnet" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" -msgstr "gruppe" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:175 #: templates/InvenTree/settings/settings_staff_js.html:189 msgid "Edit Project Code" -msgstr "Rediger prosjektkode" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:176 #: templates/InvenTree/settings/settings_staff_js.html:203 msgid "Delete Project Code" -msgstr "Slett prosjektkode" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:285 msgid "No category parameter templates found" -msgstr "Ingen kategori-parametermaler funnet" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 #: templates/js/translated/part.js:1645 msgid "Edit Template" -msgstr "Rediger mal" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 #: templates/js/translated/part.js:1646 msgid "Delete Template" -msgstr "Slett mal" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:326 msgid "Edit Category Parameter Template" -msgstr "Rediger kategori-parametermal" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:353 msgid "Delete Category Parameter Template" -msgstr "Slett kategori-parametermal" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:388 msgid "Create Category Parameter Template" -msgstr "Opprett kategori-parametermal" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:418 msgid "Create Part Parameter Template" -msgstr "Opprett del-parametermal" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:440 msgid "No stock location types found" -msgstr "Ingen lagerplasseringstyper funnet" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:461 msgid "Location count" -msgstr "Antall plasseringer" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:466 #: templates/InvenTree/settings/settings_staff_js.html:480 msgid "Edit Location Type" -msgstr "Rediger plasseringstype" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:467 msgid "Delete Location type" -msgstr "Slett plasseringstype" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:490 msgid "Delete Location Type" -msgstr "Slett plasseringstype" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 #: templates/InvenTree/settings/stock.html:35 @@ -9854,7 +10124,7 @@ msgstr "%(time)s siden" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "Er du sikker på at du vil fjerne den valgte e-postadressen?" +msgstr "" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" @@ -10044,7 +10314,7 @@ msgstr "Ikke medlem?" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "Registrer deg" @@ -10124,7 +10394,7 @@ msgstr "Registrering er for tiden stengt." #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "Tilbake til innloggingsside" @@ -10253,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "Følgende deler har for lav lagerbeholdning" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "Antall som kreves" @@ -10273,148 +10543,148 @@ msgstr "Minimum antall" #: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" -msgstr "Ingen respons" +msgstr "" #: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" -msgstr "Ingen svar fra InvenTree-serveren" +msgstr "" #: templates/js/translated/api.js:232 msgid "Error 400: Bad request" -msgstr "Feil 400: Ugyldig forespørsel" +msgstr "" #: templates/js/translated/api.js:233 msgid "API request returned error code 400" -msgstr "API-forespørsel returnerte feilkode 400" +msgstr "" #: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" -msgstr "Feil 401: Ikke autentisert" +msgstr "" #: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" -msgstr "Autentiseringslegitimasjon ikke angitt" +msgstr "" #: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" -msgstr "Feil 403: Tilgang nektet" +msgstr "" #: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "Du har ikke de nødvendige tillatelsene for tilgang til denne funksjonen" +msgstr "" #: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" -msgstr "Feil 404: Ressurs ikke funnet" +msgstr "" #: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" -msgstr "Kan ikke finne den forespurte ressursen på serveren" +msgstr "" #: templates/js/translated/api.js:252 msgid "Error 405: Method Not Allowed" -msgstr "Feil 405: Metode ikke tillatt" +msgstr "" #: templates/js/translated/api.js:253 msgid "HTTP method not allowed at URL" -msgstr "HTTP-metode er ikke tillatt i URL" +msgstr "" #: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "Feil 408: Tidsavbrudd" +msgstr "" #: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" -msgstr "Tidsavbrudd under forespørsel om data fra serveren" +msgstr "" #: templates/js/translated/api.js:261 msgid "Error 503: Service Unavailable" -msgstr "Feil 503: Tjeneste utilgjengelig" +msgstr "" #: templates/js/translated/api.js:262 msgid "The server is currently unavailable" -msgstr "Serveren er for tiden utilgjengelig" +msgstr "" #: templates/js/translated/api.js:265 msgid "Unhandled Error Code" -msgstr "Uhåndtert feilkode" +msgstr "" #: templates/js/translated/api.js:266 msgid "Error code" -msgstr "Feilkode" +msgstr "" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" -msgstr "Alle valgte vedlegg vil bli slettet" +msgstr "" #: templates/js/translated/attachment.js:129 msgid "Delete Attachments" -msgstr "Slett vedlegg" +msgstr "" #: templates/js/translated/attachment.js:205 msgid "Delete attachments" -msgstr "Slett vedlegg" +msgstr "" #: templates/js/translated/attachment.js:253 msgid "Attachment actions" -msgstr "Vedleggshandlinger" +msgstr "" #: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "Ingen vedlegg funnet" +msgstr "" #: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "Rediger vedlegg" +msgstr "" #: templates/js/translated/attachment.js:346 msgid "Upload Date" -msgstr "Opplastet dato" +msgstr "" #: templates/js/translated/attachment.js:366 msgid "Edit attachment" -msgstr "Rediger vedlegg" +msgstr "" #: templates/js/translated/attachment.js:374 msgid "Delete attachment" -msgstr "Slett vedlegg" +msgstr "" #: templates/js/translated/barcode.js:43 msgid "Scan barcode data here using barcode scanner" -msgstr "Skann strekkodedata her ved å bruke strekkodeleser" +msgstr "" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "Angi strekkodedata" +msgstr "" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" -msgstr "Skann strekkode ved hjelp av tilkoblet webkamera" +msgstr "" #: templates/js/translated/barcode.js:138 msgid "Enter optional notes for stock transfer" -msgstr "Angi valgfrie notater for lageroverføring" +msgstr "" #: templates/js/translated/barcode.js:139 msgid "Enter notes" -msgstr "Skriv inn notater" +msgstr "" #: templates/js/translated/barcode.js:188 msgid "Server error" -msgstr "Serverfeil" +msgstr "" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" -msgstr "Ukjent svar fra serveren" +msgstr "" #: templates/js/translated/barcode.js:252 #: templates/js/translated/modals.js:1120 msgid "Invalid server response" -msgstr "Ugyldig svar fra serveren" +msgstr "" #: templates/js/translated/barcode.js:372 msgid "Scan barcode data" -msgstr "Skann strekkodedata" +msgstr "" #: templates/js/translated/barcode.js:420 templates/navbar.html:114 msgid "Scan Barcode" @@ -10422,85 +10692,85 @@ msgstr "Skann strekkode" #: templates/js/translated/barcode.js:458 msgid "No URL in response" -msgstr "Ingen URL i svar" +msgstr "" #: templates/js/translated/barcode.js:498 msgid "This will remove the link to the associated barcode" -msgstr "Dette vil fjerne lenken til den tilknyttede strekkoden" +msgstr "" #: templates/js/translated/barcode.js:504 msgid "Unlink" -msgstr "Koble fra" +msgstr "" #: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 msgid "Remove stock item" -msgstr "Fjern lagervare" +msgstr "" #: templates/js/translated/barcode.js:610 msgid "Scan Stock Items Into Location" -msgstr "Skann lagervarer til plassering" +msgstr "" #: templates/js/translated/barcode.js:612 msgid "Scan stock item barcode to check in to this location" -msgstr "Skann lagervarens strekkode for å sjekke inn på denne plasseringen" +msgstr "" #: templates/js/translated/barcode.js:615 #: templates/js/translated/barcode.js:812 msgid "Check In" -msgstr "Sjekk inn" +msgstr "" #: templates/js/translated/barcode.js:647 msgid "No barcode provided" -msgstr "Ingen strekkode angitt" +msgstr "" #: templates/js/translated/barcode.js:687 msgid "Stock Item already scanned" -msgstr "Lagervaren er allerede skannet" +msgstr "" #: templates/js/translated/barcode.js:691 msgid "Stock Item already in this location" -msgstr "Lagrevare allerede på denne plasseringen" +msgstr "" #: templates/js/translated/barcode.js:698 msgid "Added stock item" -msgstr "La til lagervare" +msgstr "" #: templates/js/translated/barcode.js:707 msgid "Barcode does not match valid stock item" -msgstr "Strekkoden samsvarer ikke med gyldig lagervare" +msgstr "" #: templates/js/translated/barcode.js:726 msgid "Scan Stock Container Into Location" -msgstr "Skann lagerbeholder til plassering" +msgstr "" #: templates/js/translated/barcode.js:728 msgid "Scan stock container barcode to check in to this location" -msgstr "Skann lagerbeholderens strekkode for å sjekke inn på denne plasseringen" +msgstr "" #: templates/js/translated/barcode.js:762 msgid "Barcode does not match valid stock location" -msgstr "Strekkode samsvarer ikke med gyldig lagerplassering" +msgstr "" #: templates/js/translated/barcode.js:806 msgid "Check Into Location" -msgstr "Sjekk inn på plassering" +msgstr "" #: templates/js/translated/barcode.js:875 #: templates/js/translated/barcode.js:884 msgid "Barcode does not match a valid location" -msgstr "Strekkode samsvarer ikke med en gyldig plassering" +msgstr "" #: templates/js/translated/bom.js:78 msgid "Create BOM Item" -msgstr "Opprett BOM-artikkel" +msgstr "" #: templates/js/translated/bom.js:132 msgid "Display row data" -msgstr "Vis raddata" +msgstr "" #: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "Raddata" +msgstr "" #: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 #: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 @@ -10512,871 +10782,871 @@ msgstr "Lukk" #: templates/js/translated/bom.js:306 msgid "Download BOM Template" -msgstr "Lat ned BOM-mal" +msgstr "" #: templates/js/translated/bom.js:351 msgid "Multi Level BOM" -msgstr "Flernivå-BOM" +msgstr "" #: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" -msgstr "Inkluder BOM-data for undersammenstillinger" +msgstr "" #: templates/js/translated/bom.js:357 msgid "Levels" -msgstr "Nivåer" +msgstr "" #: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "Velg maksimalt antall BOM-nivåer å eksportere (0 = alle nivåer)" +msgstr "" #: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" -msgstr "Inkluder alternative deler" +msgstr "" #: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" -msgstr "Inkluder alternative deler i eksportert BOM" +msgstr "" #: templates/js/translated/bom.js:371 msgid "Include Parameter Data" -msgstr "Inkluder parameterdata" +msgstr "" #: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" -msgstr "Inkluder delparameterdata i eksportert BOM" +msgstr "" #: templates/js/translated/bom.js:377 msgid "Include Stock Data" -msgstr "Inkluder lagerbeholdningsdata" +msgstr "" #: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" -msgstr "Inkluder delbeholdningsdata i eksportert BOM" +msgstr "" #: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" -msgstr "Inkluder Produsentdata" +msgstr "" #: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" -msgstr "Inkluder delprodusentdata i eksportert BOM" +msgstr "" #: templates/js/translated/bom.js:389 msgid "Include Supplier Data" -msgstr "Inkluder Leverandørdata" +msgstr "" #: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" -msgstr "Inkluder delleverandørdata i eksportert BOM" +msgstr "" #: templates/js/translated/bom.js:395 msgid "Include Pricing Data" -msgstr "Inkluder prisdata" +msgstr "" #: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" -msgstr "Inkluder delprisdata i eksportert BOM" +msgstr "" #: templates/js/translated/bom.js:591 msgid "Remove substitute part" -msgstr "Fjern erstatningsdel" +msgstr "" #: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" -msgstr "Velg og legg til en ny erstatningsdel ved hjelp av inntastingen under" +msgstr "" #: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" -msgstr "Er du sikker på at du vil fjerne koblingen til denne erstatningsdelen?" +msgstr "" #: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" -msgstr "Fjern Erstatningsdel" +msgstr "" #: templates/js/translated/bom.js:701 msgid "Add Substitute" -msgstr "Legg til Erstatning" +msgstr "" #: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" -msgstr "Rediger BOM-artikkelerstatninger" +msgstr "" #: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" -msgstr "Alle valgte BOM-artikler vil bli slettet" +msgstr "" #: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" -msgstr "Slett valgte BOM-artikler?" +msgstr "" #: templates/js/translated/bom.js:826 msgid "Delete items" -msgstr "Slett artikler" +msgstr "" #: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" -msgstr "Last inn BOM for undersammenstillinger" +msgstr "" #: templates/js/translated/bom.js:946 msgid "Substitutes Available" -msgstr "Erstatninger tilgjengelig" +msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" -msgstr "Variantbeholdning tillatt" +msgstr "" #: templates/js/translated/bom.js:1014 msgid "Substitutes" -msgstr "Erstatninger" +msgstr "" #: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" -msgstr "BOM-prising er komplett" +msgstr "" #: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" -msgstr "BOM-prising er ufullstendig" +msgstr "" #: templates/js/translated/bom.js:1151 msgid "No pricing available" -msgstr "Ingen prising tilgjengelig" +msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" -msgstr "Ingen lagerbeholdning tilgjengelig" +msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" -msgstr "Inkluderer variant- og erstatningsbeholdning" +msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" -msgstr "Inkluderer variantbeholdning" +msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" -msgstr "Inkluderer erstatningsbeholdning" +msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" -msgstr "Forbruksvare" +msgstr "" #: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" -msgstr "Godkjenn BOM-artikkel" +msgstr "" #: templates/js/translated/bom.js:1281 msgid "This line has been validated" -msgstr "Denne linjen er godkjent" +msgstr "" #: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" -msgstr "Rediger erstatningsdeler" +msgstr "" #: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" -msgstr "Rediger BOM-artikkel" +msgstr "" #: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" -msgstr "Slett BOM-artikkel" +msgstr "" #: templates/js/translated/bom.js:1307 msgid "View BOM" -msgstr "Vis stykkliste" +msgstr "" #: templates/js/translated/bom.js:1391 msgid "No BOM items found" -msgstr "Ingen BOM-artikler funnet" +msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" -msgstr "Påkrevd del" +msgstr "" #: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" -msgstr "Arvet fra overordnet stykkliste" +msgstr "" #: templates/js/translated/build.js:142 msgid "Edit Build Order" -msgstr "Rediger produksjonsordre" +msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" -msgstr "Opprett Produksjonsordre" +msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" -msgstr "Kanseller Produksjonsordre" +msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" -msgstr "Er du sikker du vil kansellere produksjonen?" +msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" -msgstr "Lagervarer har blitt tildelt til denne Produksjonsordren" +msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" -msgstr "Det er fortsatt ufullstendige artikler i denne produksjonsordren" +msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" -msgstr "Produksjonsordren er klar til å fullføres" - -#: templates/js/translated/build.js:299 -msgid "This build order cannot be completed as there are incomplete outputs" -msgstr "Denne produksjonsordren kan ikke fullføres da det fortsatt er ufullstendige artikler" +msgstr "" #: templates/js/translated/build.js:304 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "" + +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" -msgstr "Produksjonsordren er ufullstendig" +msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" -msgstr "Fullføre Produksjonsordre" +msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" -msgstr "Neste tilgjengelige serienummer" +msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "Siste serienummer" +msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" -msgstr "Stykklisten inneholder sporbare deler" +msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" -msgstr "Produksjonsartikler må genereres individuelt" +msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" -msgstr "Sporbare varer kan ha serienummer angitt" +msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "Angi serienumre for å generere flere single produksjonsartikler" +msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" -msgstr "Opprett Produksjonsartikkel" +msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" -msgstr "Tildel lagervarer til denne produksjonsartikkelen" +msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" -msgstr "Fjern tildelt lagerbeholdning fra produksjonsartikkel" +msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" -msgstr "Fullfør Produksjonsartikkel" +msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" -msgstr "Skrot produksjonsartikkel" +msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" -msgstr "Slett Produksjonsartikkel" +msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" -msgstr "Er du sikker på at du vil fjerne tildelingen av valgte lagervarer fra denne produksjonen?" +msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" -msgstr "Fjern tildeling av lagervarer" +msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" -msgstr "Velg Produksjonsartikler" +msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" -msgstr "Minst en produksjonsartikkel må velges" +msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" -msgstr "Valgte produksjonsartikler vil bli markert som fullført" +msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" -msgstr "Artikkel" +msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" -msgstr "Fullfør Produksjonsartikler" +msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" -msgstr "Valgte produksjonsartikler vil bli markert som skrotet" +msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" -msgstr "Skrotede artiker merkes som avslått" +msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" -msgstr "Tildelte lagervarer vil ikke lenger være tilgjengelig" +msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" -msgstr "Fullføringen til produksjonsordren vil ikke bli justert" +msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" -msgstr "Skrot Produksjonsartikler" +msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" -msgstr "Valgte produksjonsartikler bli slettet" +msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" -msgstr "Produksjonsartikkeldata vil bli permanent slettet" +msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" -msgstr "Tildelte lagervarer returneres til lagerbeholdning" +msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" -msgstr "Slett Produksjonsartikler" +msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" -msgstr "Ingen tildelinger til produksjonsordre funnet" +msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" -msgstr "Tildelt antall" +msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" -msgstr "Plassering ikke angitt" +msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" -msgstr "Fullfør artikler" +msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" -msgstr "Skrot artikler" +msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" -msgstr "Slett artikler" - -#: templates/js/translated/build.js:1110 -msgid "build output" -msgstr "produksjonsartikkel" - -#: templates/js/translated/build.js:1111 -msgid "build outputs" -msgstr "produksjonsartikler" +msgstr "" #: templates/js/translated/build.js:1115 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1116 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1120 msgid "Build output actions" -msgstr "Handlinger for produksjonsartikler" +msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" -msgstr "Ingen aktive produksjonsartikler funnet" +msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" -msgstr "Tildelte linjer" +msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" -msgstr "Påkrevde tester" +msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "Velg deler" +msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" -msgstr "Du må velge minst en del å tildele" +msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" -msgstr "Spesifiser lagertildelingsmengde" +msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" -msgstr "Alle deler tildelt" +msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" -msgstr "Alle valgte deler er blitt fullt tildelt" +msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" -msgstr "Velg kildeplassering (la være blank for å ta fra alle plasseringer)" +msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" -msgstr "Tildel lagervarer til produksjonsordre" +msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" -msgstr "Ingen samsvarende lagerplasseringer" +msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" -msgstr "Ingen samsvarende lagervarer" +msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" -msgstr "Automatisk lagertildeling" +msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "Lagervarer vil bli automatisk tildelt denne produksjonsordren, i henhold til gitte retningslinjer" +msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" -msgstr "Om en plassering er angitt, vil lagerbeholdning kun tildeles fra denne plasseringen" +msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" -msgstr "Om lagerbeholdning er utbyttbar, vil det tildeles fra første plassering som blir funnet" +msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" -msgstr "Om erstatningsbeholdning er tillatt, vill det bli brukt fra der lagerbeholdning av primærdelen ikke er funnet" +msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" -msgstr "Tildel lagervarer" +msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" -msgstr "Ingen produksjoner samsvarer med spørringen" +msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" -msgstr "Velg" +msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" -msgstr "Produksjonsordre er forfalt" +msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" -msgstr "Fremgang" +msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" -msgstr "Ingen brukerinformasjon" +msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" -msgstr "Rediger lagertildeling" +msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" -msgstr "Slett lagertildeling" +msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" -msgstr "Rediger tildeling" +msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" -msgstr "Slett tildeling" +msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" -msgstr "produksjonslinje" +msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" -msgstr "produksjonslinjer" +msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" -msgstr "Ingen produksjonslinjer funnet" +msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" -msgstr "Sporbar del" +msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" -msgstr "Enhetsantall" +msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" -msgstr "Tilstrekkelig lagerbeholdning" +msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" -msgstr "Forbruksvare" +msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" -msgstr "Sporet element" - -#: templates/js/translated/build.js:2640 -#: templates/js/translated/sales_order.js:2016 -msgid "Build stock" -msgstr "Produksjonens lagerbeholdning" - -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 -msgid "Order stock" -msgstr "Bestill til lager" - -#: templates/js/translated/build.js:2649 -#: templates/js/translated/sales_order.js:2010 -msgid "Allocate stock" -msgstr "Tildel lagerbeholdning" +msgstr "" #: templates/js/translated/build.js:2653 +#: templates/js/translated/sales_order.js:2016 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2662 +#: templates/js/translated/sales_order.js:2010 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" -msgstr "Flern tildeling av lagerbeholdning" +msgstr "" #: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "Legg til produsent" +msgstr "" #: templates/js/translated/company.js:111 #: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "Legg til produsentdel" +msgstr "" #: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "Rediger produsentdel" +msgstr "" #: templates/js/translated/company.js:201 #: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "Legg til leverandør" +msgstr "" #: templates/js/translated/company.js:243 #: templates/js/translated/purchase_order.js:352 msgid "Add Supplier Part" -msgstr "Legg til leverandørdel" +msgstr "" #: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" -msgstr "Alle valgte leverandørdeler vil slettes" +msgstr "" #: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" -msgstr "Slett Leverandørdeler" +msgstr "" #: templates/js/translated/company.js:465 msgid "Add new Company" -msgstr "Legg til nytt selskap" +msgstr "" #: templates/js/translated/company.js:536 msgid "Parts Supplied" -msgstr "Leverte deler" +msgstr "" #: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "Produserte deler" +msgstr "" #: templates/js/translated/company.js:560 msgid "No company information found" -msgstr "Ingen selskapsinformasjon funnet" +msgstr "" #: templates/js/translated/company.js:609 msgid "Create New Contact" -msgstr "Legg til ny kontakt" +msgstr "" #: templates/js/translated/company.js:625 #: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "Rediger kontakt" +msgstr "" #: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" -msgstr "Alle valgte kontakter vil bli slettet" +msgstr "" #: templates/js/translated/company.js:668 #: templates/js/translated/company.js:732 msgid "Role" -msgstr "Rolle" +msgstr "" #: templates/js/translated/company.js:676 msgid "Delete Contacts" -msgstr "Slett kontakter" +msgstr "" #: templates/js/translated/company.js:707 msgid "No contacts found" -msgstr "Ingen kontakter funnet" +msgstr "" #: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "Telefonnummer" +msgstr "" #: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "E-postadresse" +msgstr "" #: templates/js/translated/company.js:752 msgid "Delete Contact" -msgstr "Slett kontakt" +msgstr "" #: templates/js/translated/company.js:849 msgid "Create New Address" -msgstr "Opprett ny adresse" +msgstr "" #: templates/js/translated/company.js:864 #: templates/js/translated/company.js:1025 msgid "Edit Address" -msgstr "Rediger adresse" +msgstr "" #: templates/js/translated/company.js:899 msgid "All selected addresses will be deleted" -msgstr "Alle valgte adresser vil bli slettet" +msgstr "" #: templates/js/translated/company.js:913 msgid "Delete Addresses" -msgstr "Slett adresser" +msgstr "" #: templates/js/translated/company.js:940 msgid "No addresses found" -msgstr "Ingen adresser funnet" +msgstr "" #: templates/js/translated/company.js:979 msgid "Postal city" -msgstr "Poststed" +msgstr "" #: templates/js/translated/company.js:985 msgid "State/province" -msgstr "Delstat/provins" +msgstr "" #: templates/js/translated/company.js:997 msgid "Courier notes" -msgstr "Notater for bud" +msgstr "" #: templates/js/translated/company.js:1003 msgid "Internal notes" -msgstr "Interne notater" +msgstr "" #: templates/js/translated/company.js:1029 msgid "Delete Address" -msgstr "Slett adresse" +msgstr "" #: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" -msgstr "Alle valgte produsentdeler vil bli slettet" +msgstr "" #: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" -msgstr "Slett produsentdeler" +msgstr "" #: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" -msgstr "Alle valgte parametere vil bli slettet" +msgstr "" #: templates/js/translated/company.js:1165 msgid "Delete Parameters" -msgstr "Slett parametere" +msgstr "" #: templates/js/translated/company.js:1181 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 msgid "Order parts" -msgstr "Bestill deler" +msgstr "" #: templates/js/translated/company.js:1198 msgid "Delete manufacturer parts" -msgstr "Slett produsentdeler" +msgstr "" #: templates/js/translated/company.js:1230 msgid "Manufacturer part actions" -msgstr "Handlinger for produsentdeler" +msgstr "" #: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" -msgstr "Ingen produsentdeler funnet" +msgstr "" #: templates/js/translated/company.js:1269 #: templates/js/translated/company.js:1557 templates/js/translated/part.js:798 #: templates/js/translated/part.js:1210 msgid "Template part" -msgstr "Maldel" +msgstr "" #: templates/js/translated/company.js:1273 #: templates/js/translated/company.js:1561 templates/js/translated/part.js:802 #: templates/js/translated/part.js:1214 msgid "Assembled part" -msgstr "Sammenstilt del" +msgstr "" #: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464 msgid "No parameters found" -msgstr "Ingen parametere funnet" +msgstr "" #: templates/js/translated/company.js:1428 templates/js/translated/part.js:1527 msgid "Edit parameter" -msgstr "Rediger parameter" +msgstr "" #: templates/js/translated/company.js:1429 templates/js/translated/part.js:1528 msgid "Delete parameter" -msgstr "Slett parameter" +msgstr "" #: templates/js/translated/company.js:1446 templates/js/translated/part.js:1433 msgid "Edit Parameter" -msgstr "Rediger Parameter" +msgstr "" #: templates/js/translated/company.js:1455 templates/js/translated/part.js:1549 msgid "Delete Parameter" -msgstr "Slett Parameter" +msgstr "" #: templates/js/translated/company.js:1486 msgid "Delete supplier parts" -msgstr "Slett leverandørdeler" +msgstr "" #: templates/js/translated/company.js:1536 msgid "No supplier parts found" -msgstr "Ingen leverandørdeler funnet" +msgstr "" #: templates/js/translated/company.js:1654 msgid "Base Units" -msgstr "Basisenhet" +msgstr "" #: templates/js/translated/company.js:1684 msgid "Availability" -msgstr "Tilgjengelighet" +msgstr "" #: templates/js/translated/company.js:1715 msgid "Edit supplier part" -msgstr "Rediger leverandørdel" +msgstr "" #: templates/js/translated/company.js:1716 msgid "Delete supplier part" -msgstr "Slett leverandørdel" +msgstr "" #: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" -msgstr "Slett Prisbrudd" +msgstr "" #: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" -msgstr "Rediger Prisbrudd" +msgstr "" #: templates/js/translated/company.js:1794 msgid "No price break information found" -msgstr "Ingen informasjon om prisbrudd funnet" +msgstr "" #: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "Sist oppdatert" +msgstr "" #: templates/js/translated/company.js:1830 msgid "Edit price break" -msgstr "Rediger prisbrudd" +msgstr "" #: templates/js/translated/company.js:1831 msgid "Delete price break" -msgstr "Slett prisbrudd" +msgstr "" #: templates/js/translated/filters.js:186 #: templates/js/translated/filters.js:672 msgid "true" -msgstr "sant" +msgstr "" #: templates/js/translated/filters.js:190 #: templates/js/translated/filters.js:673 msgid "false" -msgstr "usant" +msgstr "" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "Velg filter" +msgstr "" #: templates/js/translated/filters.js:437 msgid "Print Labels" -msgstr "Skriv ut etiketter" +msgstr "" #: templates/js/translated/filters.js:441 msgid "Print Reports" -msgstr "Skriv ut rapporter" +msgstr "" #: templates/js/translated/filters.js:453 msgid "Download table data" -msgstr "Last ned tabelldata" +msgstr "" #: templates/js/translated/filters.js:460 msgid "Reload table data" -msgstr "Last tabelldata på nytt" +msgstr "" #: templates/js/translated/filters.js:469 msgid "Add new filter" -msgstr "Legg til nytt filter" +msgstr "" #: templates/js/translated/filters.js:477 msgid "Clear all filters" -msgstr "Fjern alle filtre" +msgstr "" #: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "Opprett filter" +msgstr "" #: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 #: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" -msgstr "Handling forbudt" +msgstr "" #: templates/js/translated/forms.js:376 msgid "Create operation not allowed" -msgstr "Opprett-operasjon ikke tillatt" +msgstr "" #: templates/js/translated/forms.js:391 msgid "Update operation not allowed" -msgstr "Oppdater-operasjon ikke tillatt" +msgstr "" #: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" -msgstr "Slett-operasjon ikke tillatt" +msgstr "" #: templates/js/translated/forms.js:419 msgid "View operation not allowed" -msgstr "Vis-operasjon ikke tillatt" +msgstr "" #: templates/js/translated/forms.js:796 msgid "Keep this form open" -msgstr "Holde dette skjemaet åpent" +msgstr "" #: templates/js/translated/forms.js:899 msgid "Enter a valid number" -msgstr "Angi et gyldig nummer" +msgstr "" #: templates/js/translated/forms.js:1469 templates/modals.html:19 #: templates/modals.html:43 @@ -11385,104 +11655,100 @@ msgstr "Skjemafeil eksisterer" #: templates/js/translated/forms.js:1967 msgid "No results found" -msgstr "Ingen resultater funnet" +msgstr "" #: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239 msgid "Searching" -msgstr "Søker" +msgstr "" #: templates/js/translated/forms.js:2485 msgid "Clear input" -msgstr "Tøm inndata" +msgstr "" #: templates/js/translated/forms.js:3071 msgid "File Column" -msgstr "Filkolonne" +msgstr "" #: templates/js/translated/forms.js:3071 msgid "Field Name" -msgstr "Feltnavn" +msgstr "" #: templates/js/translated/forms.js:3083 msgid "Select Columns" -msgstr "Velg Kolonner" +msgstr "" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "JA" +msgstr "" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "NEI" +msgstr "" #: templates/js/translated/helpers.js:93 msgid "True" -msgstr "Sant" +msgstr "" #: templates/js/translated/helpers.js:94 msgid "False" -msgstr "Usant" +msgstr "" #: templates/js/translated/index.js:104 msgid "No parts required for builds" -msgstr "Ingen deler kreves for produksjoner" - -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "Tildelt lagerbeholdning" +msgstr "" #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" -msgstr "Velg artikler" +msgstr "" #: templates/js/translated/label.js:54 msgid "No items selected for printing" -msgstr "Ingen artikler valgt for utskrift" +msgstr "" #: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "Ingen etiketter funnet" +msgstr "" #: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" -msgstr "Ingen etikettmaler funnet som samsvarer med de valgte elementene" +msgstr "" #: templates/js/translated/label.js:97 msgid "selected" -msgstr "valgt" +msgstr "" #: templates/js/translated/label.js:133 msgid "Printing Options" -msgstr "Utskriftsvalg" +msgstr "" #: templates/js/translated/label.js:148 msgid "Print label" -msgstr "Skriv ut etikett" +msgstr "" #: templates/js/translated/label.js:148 msgid "Print labels" -msgstr "Skriv ut etiketter" +msgstr "" #: templates/js/translated/label.js:149 msgid "Print" -msgstr "Skriv ut" +msgstr "" #: templates/js/translated/label.js:155 msgid "Select label template" -msgstr "Velg etikettmal" +msgstr "" #: templates/js/translated/label.js:168 msgid "Select plugin" -msgstr "Velg Plugin" +msgstr "" #: templates/js/translated/label.js:187 msgid "Labels sent to printer" -msgstr "Etiketter sendt til skriver" +msgstr "" #: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 #: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "Avbryt" +msgstr "" #: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 #: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 @@ -11492,81 +11758,81 @@ msgstr "Send" #: templates/js/translated/modals.js:156 msgid "Form Title" -msgstr "Skjematittel" +msgstr "" #: templates/js/translated/modals.js:445 msgid "Waiting for server..." -msgstr "Venter på server..." +msgstr "" #: templates/js/translated/modals.js:596 msgid "Show Error Information" -msgstr "Vis feilinformasjon" +msgstr "" #: templates/js/translated/modals.js:682 msgid "Accept" -msgstr "Godta" +msgstr "" #: templates/js/translated/modals.js:740 msgid "Loading Data" -msgstr "Laster data" +msgstr "" #: templates/js/translated/modals.js:1011 msgid "Invalid response from server" -msgstr "Ugyldig svar fra server" +msgstr "" #: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" -msgstr "Skjemadata mangler i serversvar" +msgstr "" #: templates/js/translated/modals.js:1023 msgid "Error posting form data" -msgstr "Feil ved lagring av skjemadata" +msgstr "" #: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" -msgstr "JSON-svar mangler skjemadata" +msgstr "" #: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" -msgstr "Feil 400: Ugyldig forespørsel" +msgstr "" #: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" -msgstr "Serveren returnerte feilkode 400" +msgstr "" #: templates/js/translated/modals.js:1159 msgid "Error requesting form data" -msgstr "Feil under forespørsel av skjemadata" +msgstr "" #: templates/js/translated/news.js:33 msgid "No news found" -msgstr "Ingen nyheter funnet" +msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 #: templates/js/translated/part.js:1604 msgid "ID" -msgstr "ID" +msgstr "" #: templates/js/translated/notification.js:52 msgid "Age" -msgstr "Alder" +msgstr "" #: templates/js/translated/notification.js:65 msgid "Notification" -msgstr "Varsel" +msgstr "" #: templates/js/translated/notification.js:224 msgid "Mark as unread" -msgstr "Marker som ulest" +msgstr "" #: templates/js/translated/notification.js:228 msgid "Mark as read" -msgstr "Merk som lest" +msgstr "" #: templates/js/translated/notification.js:254 msgid "No unread notifications" -msgstr "Ingen uleste varsler" +msgstr "" #: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" @@ -11574,963 +11840,967 @@ msgstr "Varsler lastes inn her" #: templates/js/translated/order.js:89 msgid "Add Extra Line Item" -msgstr "Legg til ekstra ordrelinje" +msgstr "" #: templates/js/translated/order.js:126 msgid "Export Order" -msgstr "Eksporter ordre" +msgstr "" #: templates/js/translated/order.js:241 msgid "Duplicate Line" -msgstr "Dupliser linje" +msgstr "" #: templates/js/translated/order.js:255 msgid "Edit Line" -msgstr "Rediger linje" +msgstr "" #: templates/js/translated/order.js:268 msgid "Delete Line" -msgstr "Slett linje" +msgstr "" #: templates/js/translated/order.js:281 #: templates/js/translated/purchase_order.js:1987 msgid "No line items found" -msgstr "Ingen linjeelementer funnet" +msgstr "" #: templates/js/translated/order.js:369 msgid "Duplicate line" -msgstr "Dupliser linje" +msgstr "" #: templates/js/translated/order.js:370 msgid "Edit line" -msgstr "Rediger linje" +msgstr "" #: templates/js/translated/order.js:374 msgid "Delete line" -msgstr "Slett linje" +msgstr "" #: templates/js/translated/part.js:90 msgid "Part Attributes" -msgstr "Del-attributter" +msgstr "" #: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "Alternativer for delopprettelse" +msgstr "" #: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "Alternativer for delduplisering" +msgstr "" #: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "Legg til kategori" +msgstr "" #: templates/js/translated/part.js:308 msgid "Parent part category" -msgstr "Overordnet del-kategori" +msgstr "" #: templates/js/translated/part.js:332 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" -msgstr "Ikon (valgfritt) - Utforsk alle tilgjengelige ikoner på" +msgstr "" #: templates/js/translated/part.js:352 msgid "Create Part Category" -msgstr "Opprett del-kategori" +msgstr "" #: templates/js/translated/part.js:355 msgid "Create new category after this one" -msgstr "Opprett ny kategori etter denne" +msgstr "" #: templates/js/translated/part.js:356 msgid "Part category created" -msgstr "Del-kategori opprettet" +msgstr "" #: templates/js/translated/part.js:370 msgid "Edit Part Category" -msgstr "Rediger del-kategori" +msgstr "" #: templates/js/translated/part.js:383 msgid "Are you sure you want to delete this part category?" -msgstr "Er du sikker på at du vil slette denne del-kategorien?" +msgstr "" #: templates/js/translated/part.js:388 msgid "Move to parent category" -msgstr "Flytt til overordnet kategori" +msgstr "" #: templates/js/translated/part.js:397 msgid "Delete Part Category" -msgstr "Slett del-kategori" +msgstr "" #: templates/js/translated/part.js:401 msgid "Action for parts in this category" -msgstr "Handling for deler i denne kategorien" +msgstr "" #: templates/js/translated/part.js:406 msgid "Action for child categories" -msgstr "Handling for underkategorier" +msgstr "" #: templates/js/translated/part.js:430 msgid "Create Part" -msgstr "Opprett Del" +msgstr "" #: templates/js/translated/part.js:432 msgid "Create another part after this one" -msgstr "Opprett enda en del etter denne" +msgstr "" #: templates/js/translated/part.js:433 msgid "Part created successfully" -msgstr "Del opprettet" +msgstr "" #: templates/js/translated/part.js:461 msgid "Edit Part" -msgstr "Rediger del" +msgstr "" #: templates/js/translated/part.js:463 msgid "Part edited" -msgstr "Del redigert" +msgstr "" #: templates/js/translated/part.js:474 msgid "Create Part Variant" -msgstr "Opprett delvariant" +msgstr "" #: templates/js/translated/part.js:531 msgid "Active Part" -msgstr "Aktiv del" +msgstr "" #: templates/js/translated/part.js:532 msgid "Part cannot be deleted as it is currently active" -msgstr "Delen kan ikke slettes ettersom den er aktiv" +msgstr "" #: templates/js/translated/part.js:546 msgid "Deleting this part cannot be reversed" -msgstr "Sletting av denne delen kan ikke angres" +msgstr "" #: templates/js/translated/part.js:548 msgid "Any stock items for this part will be deleted" -msgstr "Eventuelle lagervarer for denne delen vil bli slettet" +msgstr "" #: templates/js/translated/part.js:549 msgid "This part will be removed from any Bills of Material" -msgstr "Denne delen vil bli fjernet fra eventuelle stykklister" +msgstr "" #: templates/js/translated/part.js:550 msgid "All manufacturer and supplier information for this part will be deleted" -msgstr "All produsent- og leverandørinformasjon for denne delen vil bli slettet" +msgstr "" #: templates/js/translated/part.js:557 msgid "Delete Part" -msgstr "Slett del" +msgstr "" #: templates/js/translated/part.js:593 msgid "You are subscribed to notifications for this item" -msgstr "Du abonnerer på varsler for denne artikkelen" +msgstr "" #: templates/js/translated/part.js:595 msgid "You have subscribed to notifications for this item" -msgstr "Du abonnerer nå på varsler for denne artikkelen" +msgstr "" #: templates/js/translated/part.js:600 msgid "Subscribe to notifications for this item" -msgstr "Abonner på varsler for denne artikkelen" +msgstr "" #: templates/js/translated/part.js:602 msgid "You have unsubscribed to notifications for this item" -msgstr "Du har avsluttet abonnementet på varsler for denne artikkelen" +msgstr "" #: templates/js/translated/part.js:619 msgid "Validating the BOM will mark each line item as valid" -msgstr "Godkjenning av BOM vil merke hvert linjeelement som godkjent" +msgstr "" #: templates/js/translated/part.js:629 msgid "Validate Bill of Materials" -msgstr "Godkjenn Stykkliste" +msgstr "" #: templates/js/translated/part.js:632 msgid "Validated Bill of Materials" -msgstr "Godkjente Stykkliste" +msgstr "" #: templates/js/translated/part.js:657 msgid "Copy Bill of Materials" -msgstr "Kopier Stykkliste" +msgstr "" #: templates/js/translated/part.js:685 #: templates/js/translated/table_filters.js:743 msgid "Low stock" -msgstr "Lite lager" +msgstr "" #: templates/js/translated/part.js:688 msgid "No stock available" -msgstr "Ingen varer på lager" +msgstr "" #: templates/js/translated/part.js:748 msgid "Demand" -msgstr "Etterspørsel" +msgstr "" #: templates/js/translated/part.js:771 msgid "Unit" -msgstr "Enhet" +msgstr "" #: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 msgid "Virtual part" -msgstr "Virtuell del" +msgstr "" #: templates/js/translated/part.js:806 msgid "Subscribed part" -msgstr "Abonnert del" +msgstr "" #: templates/js/translated/part.js:810 msgid "Salable part" -msgstr "Salgbar del" +msgstr "" #: templates/js/translated/part.js:889 msgid "Schedule generation of a new stocktake report." -msgstr "Planlegg opprettelse av en ny varetellingsrapport." +msgstr "" #: templates/js/translated/part.js:889 msgid "Once complete, the stocktake report will be available for download." -msgstr "Ved fullførelse vil varetellingsrapporten være tilgjengelig for nedlasting." +msgstr "" #: templates/js/translated/part.js:897 msgid "Generate Stocktake Report" -msgstr "Generer lagertellingsrapport" +msgstr "" #: templates/js/translated/part.js:901 msgid "Stocktake report scheduled" -msgstr "Varetellingsrapport planlagt" +msgstr "" #: templates/js/translated/part.js:1050 msgid "No stocktake information available" -msgstr "Ingen varetellingsinformasjon tilgjengelig" +msgstr "" #: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 msgid "Edit Stocktake Entry" -msgstr "Rediger varetellingspunkt" +msgstr "" #: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 msgid "Delete Stocktake Entry" -msgstr "Slett varetellingspunkt" +msgstr "" #: templates/js/translated/part.js:1281 msgid "No variants found" -msgstr "Ingen varianter funnet" +msgstr "" #: templates/js/translated/part.js:1599 msgid "No part parameter templates found" -msgstr "Ingen del-parametermaler funnet" +msgstr "" #: templates/js/translated/part.js:1662 msgid "Edit Part Parameter Template" -msgstr "Rediger del-parametermal" +msgstr "" #: templates/js/translated/part.js:1674 msgid "Any parameters which reference this template will also be deleted" -msgstr "Alle parametere som henviser til denne malen vil også slettes" +msgstr "" #: templates/js/translated/part.js:1682 msgid "Delete Part Parameter Template" -msgstr "Slett del-parametermal" +msgstr "" #: templates/js/translated/part.js:1716 #: templates/js/translated/purchase_order.js:1651 msgid "No purchase orders found" -msgstr "Ingen innkjøpsordrer funnet" +msgstr "" #: templates/js/translated/part.js:1860 #: templates/js/translated/purchase_order.js:2150 #: templates/js/translated/return_order.js:756 #: templates/js/translated/sales_order.js:1875 msgid "This line item is overdue" -msgstr "Denne ordrelinjen er over tidsfristen" +msgstr "" #: templates/js/translated/part.js:1906 #: templates/js/translated/purchase_order.js:2217 msgid "Receive line item" -msgstr "Motta ordrelinje" +msgstr "" #: templates/js/translated/part.js:1969 msgid "Delete part relationship" -msgstr "Slett del-forhold" +msgstr "" #: templates/js/translated/part.js:1991 msgid "Delete Part Relationship" -msgstr "Slett del-forhold" +msgstr "" #: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 msgid "No parts found" -msgstr "Ingen deler funnet" +msgstr "" #: templates/js/translated/part.js:2200 msgid "Set the part category for the selected parts" -msgstr "Vel del-kategorien for valgte deler" +msgstr "" #: templates/js/translated/part.js:2205 msgid "Set Part Category" -msgstr "Vel del-kategori" +msgstr "" #: templates/js/translated/part.js:2235 msgid "Set category" -msgstr "Sett kategori" +msgstr "" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" #: templates/js/translated/part.js:2288 msgid "parts" -msgstr "deler" +msgstr "" #: templates/js/translated/part.js:2384 msgid "No category" -msgstr "Ingen kategori" +msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2640 msgid "Display as list" -msgstr "Vis som liste" +msgstr "" #: templates/js/translated/part.js:2547 msgid "Display as grid" -msgstr "Vis som rutenett" +msgstr "" #: templates/js/translated/part.js:2645 msgid "No subcategories found" -msgstr "Ingen underkategorier funnet" +msgstr "" #: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "Vis som tre" +msgstr "" #: templates/js/translated/part.js:2761 msgid "Load Subcategories" -msgstr "Inkluder underkategorier" +msgstr "" #: templates/js/translated/part.js:2777 msgid "Subscribed category" -msgstr "Abonnert kategori" +msgstr "" #: templates/js/translated/part.js:2854 msgid "No test templates matching query" -msgstr "Ingen testmaler samsvarer med spørringen" +msgstr "" #: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436 msgid "Edit test result" -msgstr "Rediger testresultat" +msgstr "" #: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437 #: templates/js/translated/stock.js:1699 msgid "Delete test result" -msgstr "Slett testresultat" +msgstr "" #: templates/js/translated/part.js:2910 msgid "This test is defined for a parent part" -msgstr "Denne testen er definert for en overordnet del" +msgstr "" #: templates/js/translated/part.js:2926 msgid "Edit Test Result Template" -msgstr "Rediger testresultatmal" +msgstr "" #: templates/js/translated/part.js:2940 msgid "Delete Test Result Template" -msgstr "Slett testresultatmal" +msgstr "" #: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020 msgid "No date specified" -msgstr "Ingen dato angitt" +msgstr "" #: templates/js/translated/part.js:3022 msgid "Specified date is in the past" -msgstr "Spesifisert dato er i fortiden" +msgstr "" #: templates/js/translated/part.js:3028 msgid "Speculative" -msgstr "Spekulativ" +msgstr "" #: templates/js/translated/part.js:3078 msgid "No scheduling information available for this part" -msgstr "Ingen planleggingsinformasjon tilgjengelig for denne delen" +msgstr "" #: templates/js/translated/part.js:3084 msgid "Error fetching scheduling information for this part" -msgstr "Feil ved henting av planleggingsinformasjon for denne delen" +msgstr "" #: templates/js/translated/part.js:3180 msgid "Scheduled Stock Quantities" -msgstr "Planlagt lagerbeholdning" +msgstr "" #: templates/js/translated/part.js:3196 msgid "Maximum Quantity" -msgstr "Maksimalt antall" +msgstr "" #: templates/js/translated/part.js:3241 msgid "Minimum Stock Level" -msgstr "Minimalt lagerbeholdningsnivå" +msgstr "" #: templates/js/translated/plugin.js:46 msgid "No plugins found" -msgstr "Ingen utvidelser funnet" +msgstr "" #: templates/js/translated/plugin.js:58 msgid "This plugin is no longer installed" -msgstr "Denne utvidelsen er ikke lenger installert" +msgstr "" #: templates/js/translated/plugin.js:60 msgid "This plugin is active" -msgstr "Denne utvidelsen er aktiv" +msgstr "" #: templates/js/translated/plugin.js:62 msgid "This plugin is installed but not active" -msgstr "Denne utvidelsen er installert, men ikke aktiv" +msgstr "" #: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:186 msgid "Disable Plugin" -msgstr "Deaktiver utvidelse" +msgstr "" #: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:186 msgid "Enable Plugin" -msgstr "Aktiver utvidelse" +msgstr "" #: templates/js/translated/plugin.js:158 msgid "The Plugin was installed" -msgstr "Utvidelsen ble installert" +msgstr "" #: templates/js/translated/plugin.js:177 msgid "Are you sure you want to enable this plugin?" -msgstr "Er du sikker på at du vil aktivere denne utvidelsen?" +msgstr "" #: templates/js/translated/plugin.js:181 msgid "Are you sure you want to disable this plugin?" -msgstr "Er du sikker på at du vil deaktivere denne utvidelsen?" +msgstr "" #: templates/js/translated/plugin.js:189 msgid "Enable" -msgstr "Aktiver" +msgstr "" #: templates/js/translated/plugin.js:189 msgid "Disable" -msgstr "Deaktiver" +msgstr "" #: templates/js/translated/plugin.js:203 msgid "Plugin updated" -msgstr "Utvidelse oppdatert" +msgstr "" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" -msgstr "Feil ved henting av valutadata" +msgstr "" #: templates/js/translated/pricing.js:321 msgid "No BOM data available" -msgstr "Ingen BOM-data tilgjengelig" +msgstr "" #: templates/js/translated/pricing.js:463 msgid "No supplier pricing data available" -msgstr "Ingen leverandørprisdata tilgjengelig" +msgstr "" #: templates/js/translated/pricing.js:572 msgid "No price break data available" -msgstr "Ingen data om prisbrudd tilgjengelig" +msgstr "" #: templates/js/translated/pricing.js:755 msgid "No purchase history data available" -msgstr "Ingen data tilgjengelig for kjøpshistorikk" +msgstr "" #: templates/js/translated/pricing.js:791 msgid "Purchase Price History" -msgstr "Inkjøpsprishistorikk" +msgstr "" #: templates/js/translated/pricing.js:894 msgid "No sales history data available" -msgstr "Ingen data tilgjengelig for salgshistorikk" +msgstr "" #: templates/js/translated/pricing.js:916 msgid "Sale Price History" -msgstr "Salgsprishistorikk" +msgstr "" #: templates/js/translated/pricing.js:1005 msgid "No variant data available" -msgstr "Ingen variantdata tilgjengelig" +msgstr "" #: templates/js/translated/pricing.js:1045 msgid "Variant Part" -msgstr "Variantdel" +msgstr "" #: templates/js/translated/purchase_order.js:169 msgid "Select purchase order to duplicate" -msgstr "Velg innkjøpsordre som skal dupliseres" +msgstr "" #: templates/js/translated/purchase_order.js:176 msgid "Duplicate Line Items" -msgstr "Dupliser linjeelementer" +msgstr "" #: templates/js/translated/purchase_order.js:177 msgid "Duplicate all line items from the selected order" -msgstr "Dupliser alle linjeelementer fra den valgte ordren" +msgstr "" #: templates/js/translated/purchase_order.js:184 msgid "Duplicate Extra Lines" -msgstr "Dupliser ekstra linjer" +msgstr "" #: templates/js/translated/purchase_order.js:185 msgid "Duplicate extra line items from the selected order" -msgstr "Dupliser ekstra linjeelementer fra den valgte ordren" +msgstr "" #: templates/js/translated/purchase_order.js:206 msgid "Edit Purchase Order" -msgstr "Rediger innkjøpsordre" +msgstr "" #: templates/js/translated/purchase_order.js:223 msgid "Duplication Options" -msgstr "Alternativer for duplisering" +msgstr "" #: templates/js/translated/purchase_order.js:450 msgid "Complete Purchase Order" -msgstr "Fullfør Innkjøpsordre" +msgstr "" #: templates/js/translated/purchase_order.js:467 #: templates/js/translated/return_order.js:210 #: templates/js/translated/sales_order.js:500 msgid "Mark this order as complete?" -msgstr "Merk ordren som fullført?" +msgstr "" #: templates/js/translated/purchase_order.js:473 msgid "All line items have been received" -msgstr "Alle linjeelementer har blitt mottatt" +msgstr "" #: templates/js/translated/purchase_order.js:478 msgid "This order has line items which have not been marked as received." -msgstr "Denne ordren har linjeelementer som ikke er merket som mottatt." +msgstr "" #: templates/js/translated/purchase_order.js:479 #: templates/js/translated/sales_order.js:514 msgid "Completing this order means that the order and line items will no longer be editable." -msgstr "Ved å fullføre denne ordren er det ikke lenger mulig å redigere ordren og linjeelementene." +msgstr "" #: templates/js/translated/purchase_order.js:502 msgid "Cancel Purchase Order" -msgstr "Kanseller Innkjøpsordre" +msgstr "" #: templates/js/translated/purchase_order.js:507 msgid "Are you sure you wish to cancel this purchase order?" -msgstr "Er du sikker du vil kansellere innkjøpsordren?" +msgstr "" #: templates/js/translated/purchase_order.js:513 msgid "This purchase order can not be cancelled" -msgstr "Denne innkjøpsordren kan ikke kanselleres" +msgstr "" #: templates/js/translated/purchase_order.js:534 #: templates/js/translated/return_order.js:164 msgid "After placing this order, line items will no longer be editable." -msgstr "Etter at ordren er sendt, vil linjeelementene ikke lenger kunne redigeres." +msgstr "" #: templates/js/translated/purchase_order.js:539 msgid "Issue Purchase Order" -msgstr "Send innkjøpsordre" +msgstr "" #: templates/js/translated/purchase_order.js:631 msgid "At least one purchaseable part must be selected" -msgstr "Minst én innkjøpsbar del må være valgt" +msgstr "" #: templates/js/translated/purchase_order.js:656 msgid "Quantity to order" -msgstr "Antall å bestille" +msgstr "" #: templates/js/translated/purchase_order.js:665 msgid "New supplier part" -msgstr "Ny leverandørdel" +msgstr "" #: templates/js/translated/purchase_order.js:683 msgid "New purchase order" -msgstr "Ny innkjøpsordre" +msgstr "" #: templates/js/translated/purchase_order.js:715 msgid "Add to purchase order" -msgstr "Legg til innkjøpsordre" +msgstr "" #: templates/js/translated/purchase_order.js:863 msgid "No matching supplier parts" -msgstr "Ingen samsvarende leverandørdeler" +msgstr "" #: templates/js/translated/purchase_order.js:882 msgid "No matching purchase orders" -msgstr "Ingen samsvarende innkjøpsordre" +msgstr "" #: templates/js/translated/purchase_order.js:1069 msgid "Select Line Items" -msgstr "Velg linjeelementer" +msgstr "" #: templates/js/translated/purchase_order.js:1070 #: templates/js/translated/return_order.js:492 msgid "At least one line item must be selected" -msgstr "Minst ett linjeelement må være valgt" +msgstr "" #: templates/js/translated/purchase_order.js:1100 msgid "Received Quantity" -msgstr "Mottatt antall" +msgstr "" #: templates/js/translated/purchase_order.js:1111 msgid "Quantity to receive" -msgstr "Antall å motta" +msgstr "" #: templates/js/translated/purchase_order.js:1187 msgid "Stock Status" -msgstr "Lagerstatus" +msgstr "" #: templates/js/translated/purchase_order.js:1201 msgid "Add barcode" -msgstr "Legg til strekkode" +msgstr "" #: templates/js/translated/purchase_order.js:1202 msgid "Remove barcode" -msgstr "Fjern strekkode" +msgstr "" #: templates/js/translated/purchase_order.js:1205 msgid "Specify location" -msgstr "Velg plassering" +msgstr "" #: templates/js/translated/purchase_order.js:1213 msgid "Add batch code" -msgstr "Legg til batchkode" +msgstr "" #: templates/js/translated/purchase_order.js:1224 msgid "Add serial numbers" -msgstr "Legg til serienumre" +msgstr "" #: templates/js/translated/purchase_order.js:1276 msgid "Serials" -msgstr "Serienumre" +msgstr "" #: templates/js/translated/purchase_order.js:1301 msgid "Order Code" -msgstr "Ordrekode" +msgstr "" #: templates/js/translated/purchase_order.js:1303 msgid "Quantity to Receive" -msgstr "Antall å motta" +msgstr "" #: templates/js/translated/purchase_order.js:1329 #: templates/js/translated/return_order.js:561 msgid "Confirm receipt of items" -msgstr "Bekreft mottak av varer" +msgstr "" #: templates/js/translated/purchase_order.js:1330 msgid "Receive Purchase Order Items" -msgstr "Motta Innkjøpsordreartikler" +msgstr "" #: templates/js/translated/purchase_order.js:1398 msgid "Scan Item Barcode" -msgstr "Skann elementets strekkode" +msgstr "" #: templates/js/translated/purchase_order.js:1399 msgid "Scan barcode on incoming item (must not match any existing stock items)" -msgstr "Skann strekkode på innkommende element. (Kan ikke samsvare med eksisterende lagervarer)" +msgstr "" #: templates/js/translated/purchase_order.js:1413 msgid "Invalid barcode data" -msgstr "Ugyldig strekkodedata" +msgstr "" #: templates/js/translated/purchase_order.js:1678 #: templates/js/translated/return_order.js:286 #: templates/js/translated/sales_order.js:774 #: templates/js/translated/sales_order.js:998 msgid "Order is overdue" -msgstr "Ordren er forfalt" +msgstr "" #: templates/js/translated/purchase_order.js:1744 #: templates/js/translated/return_order.js:354 #: templates/js/translated/sales_order.js:851 #: templates/js/translated/sales_order.js:1011 msgid "Items" -msgstr "Artikler" +msgstr "" #: templates/js/translated/purchase_order.js:1840 msgid "All selected Line items will be deleted" -msgstr "Alle valgte ordrelinjer vil bli slettet" +msgstr "" #: templates/js/translated/purchase_order.js:1858 msgid "Delete selected Line items?" -msgstr "Slett valgte linjeelementer?" +msgstr "" #: templates/js/translated/purchase_order.js:1913 #: templates/js/translated/sales_order.js:2070 msgid "Duplicate Line Item" -msgstr "Dupliser linjeelementer" +msgstr "" #: templates/js/translated/purchase_order.js:1928 #: templates/js/translated/return_order.js:476 #: templates/js/translated/return_order.js:669 #: templates/js/translated/sales_order.js:2083 msgid "Edit Line Item" -msgstr "Rediger ordrelinje" +msgstr "" #: templates/js/translated/purchase_order.js:1939 #: templates/js/translated/return_order.js:682 #: templates/js/translated/sales_order.js:2094 msgid "Delete Line Item" -msgstr "Slett ordrelinje" +msgstr "" #: templates/js/translated/purchase_order.js:2221 #: templates/js/translated/sales_order.js:2024 msgid "Duplicate line item" -msgstr "Dupliser ordrelinje" +msgstr "" #: templates/js/translated/purchase_order.js:2222 #: templates/js/translated/return_order.js:801 #: templates/js/translated/sales_order.js:2025 msgid "Edit line item" -msgstr "Rediger ordrelinje" +msgstr "" #: templates/js/translated/purchase_order.js:2223 #: templates/js/translated/return_order.js:805 #: templates/js/translated/sales_order.js:2031 msgid "Delete line item" -msgstr "Slett ordrelinje" +msgstr "" #: templates/js/translated/report.js:63 msgid "items selected" -msgstr "valgte elementer" +msgstr "" #: templates/js/translated/report.js:71 msgid "Select Report Template" -msgstr "Velg rapportmal" +msgstr "" #: templates/js/translated/report.js:86 msgid "Select Test Report Template" -msgstr "Velg testrapportmal" +msgstr "" #: templates/js/translated/report.js:140 msgid "No Reports Found" -msgstr "Ingen rapporter funnet" +msgstr "" #: templates/js/translated/report.js:141 msgid "No report templates found which match the selected items" -msgstr "Fant ingen rapportmaler som samsvarer med de valgte elementene" +msgstr "" #: templates/js/translated/return_order.js:60 #: templates/js/translated/sales_order.js:86 msgid "Add Customer" -msgstr "Ny kunde" +msgstr "" #: templates/js/translated/return_order.js:134 msgid "Create Return Order" -msgstr "Ny Returordre" +msgstr "" #: templates/js/translated/return_order.js:149 msgid "Edit Return Order" -msgstr "Rediger Returordre" +msgstr "" #: templates/js/translated/return_order.js:169 msgid "Issue Return Order" -msgstr "Send Returordre" +msgstr "" #: templates/js/translated/return_order.js:186 msgid "Are you sure you wish to cancel this Return Order?" -msgstr "Er du sikker du vil kansellere returordren?" +msgstr "" #: templates/js/translated/return_order.js:193 msgid "Cancel Return Order" -msgstr "Kanseller Returordre" +msgstr "" #: templates/js/translated/return_order.js:218 msgid "Complete Return Order" -msgstr "Fullfør Returordre" +msgstr "" #: templates/js/translated/return_order.js:266 msgid "No return orders found" -msgstr "Ingen returordrer funnet" +msgstr "" #: templates/js/translated/return_order.js:300 #: templates/js/translated/sales_order.js:788 msgid "Invalid Customer" -msgstr "Ugyldig kunde" +msgstr "" #: templates/js/translated/return_order.js:562 msgid "Receive Return Order Items" -msgstr "Motta ordrelinjer" +msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" -msgstr "Ingen samsvarende ordrelinjer" +msgstr "" #: templates/js/translated/return_order.js:798 msgid "Mark item as received" -msgstr "Merk som mottatt" +msgstr "" #: templates/js/translated/sales_order.js:161 msgid "Create Sales Order" -msgstr "Opprett salgsordre" +msgstr "" #: templates/js/translated/sales_order.js:176 msgid "Edit Sales Order" -msgstr "Rediger salgsordre" +msgstr "" #: templates/js/translated/sales_order.js:291 msgid "No stock items have been allocated to this shipment" -msgstr "Ingen Lagervarer har blitt tildelt denne forsendelsen" +msgstr "" #: templates/js/translated/sales_order.js:296 msgid "The following stock items will be shipped" -msgstr "Følgende lagervarer blir sendt" +msgstr "" #: templates/js/translated/sales_order.js:336 msgid "Complete Shipment" -msgstr "Fullfør forsendelse" +msgstr "" #: templates/js/translated/sales_order.js:360 msgid "Confirm Shipment" -msgstr "Bekreft forsendelse" +msgstr "" #: templates/js/translated/sales_order.js:416 msgid "No pending shipments found" -msgstr "Ingen ventende forsendelser funnet" +msgstr "" #: templates/js/translated/sales_order.js:420 msgid "No stock items have been allocated to pending shipments" -msgstr "Ingen Lagervarer har blitt tildelt til ventende forsendelser" +msgstr "" #: templates/js/translated/sales_order.js:430 msgid "Complete Shipments" -msgstr "Fullfør forsendelser" +msgstr "" #: templates/js/translated/sales_order.js:452 msgid "Skip" -msgstr "Hopp over" +msgstr "" #: templates/js/translated/sales_order.js:513 msgid "This order has line items which have not been completed." -msgstr "Denne ordren har ordrelinjer som ikke er fullførte." +msgstr "" #: templates/js/translated/sales_order.js:535 msgid "Issue this Sales Order?" -msgstr "Send denne salgsordren?" +msgstr "" #: templates/js/translated/sales_order.js:540 msgid "Issue Sales Order" -msgstr "Send salgsordre" +msgstr "" #: templates/js/translated/sales_order.js:559 msgid "Cancel Sales Order" -msgstr "Kanseller salgsordre" +msgstr "" #: templates/js/translated/sales_order.js:564 msgid "Cancelling this order means that the order will no longer be editable." -msgstr "Å kansellere denne ordren betyr at ordren ikke lenger vil kunne redigeres." +msgstr "" #: templates/js/translated/sales_order.js:618 msgid "Create New Shipment" -msgstr "Opprett ny forsendelse" +msgstr "" #: templates/js/translated/sales_order.js:728 msgid "No sales orders found" -msgstr "Ingen salgsordrer funnet" +msgstr "" #: templates/js/translated/sales_order.js:908 msgid "Edit shipment" -msgstr "Rediger forsendelse" +msgstr "" #: templates/js/translated/sales_order.js:911 msgid "Complete shipment" -msgstr "Fullfør forsendelse" +msgstr "" #: templates/js/translated/sales_order.js:916 msgid "Delete shipment" -msgstr "Slett forsendelse" +msgstr "" #: templates/js/translated/sales_order.js:933 msgid "Edit Shipment" -msgstr "Rediger forsendelse" +msgstr "" #: templates/js/translated/sales_order.js:948 msgid "Delete Shipment" -msgstr "Slett forsendelse" +msgstr "" #: templates/js/translated/sales_order.js:981 msgid "No matching shipments found" -msgstr "Ingen samsvarende forsendelser funnet" +msgstr "" #: templates/js/translated/sales_order.js:1006 msgid "Shipment Reference" -msgstr "Forsendelsesreferanse" +msgstr "" #: templates/js/translated/sales_order.js:1030 #: templates/js/translated/sales_order.js:1529 msgid "Not shipped" -msgstr "Ikke sendt" +msgstr "" #: templates/js/translated/sales_order.js:1048 msgid "Tracking" -msgstr "Sporing" +msgstr "" #: templates/js/translated/sales_order.js:1052 msgid "Invoice" -msgstr "Faktura" +msgstr "" #: templates/js/translated/sales_order.js:1219 msgid "Add Shipment" -msgstr "Legg til forsendelse" +msgstr "" #: templates/js/translated/sales_order.js:1270 msgid "Confirm stock allocation" -msgstr "Bekreft lagertildeling" +msgstr "" #: templates/js/translated/sales_order.js:1271 msgid "Allocate Stock Items to Sales Order" -msgstr "Tildel lagervarer til salgsordre" +msgstr "" #: templates/js/translated/sales_order.js:1477 msgid "No sales order allocations found" -msgstr "Ingen salgsordretildelinger funnet" +msgstr "" #: templates/js/translated/sales_order.js:1569 msgid "Edit Stock Allocation" -msgstr "Rediger lagertildeling" +msgstr "" #: templates/js/translated/sales_order.js:1583 msgid "Confirm Delete Operation" -msgstr "Bekreft sletteoperasjon" +msgstr "" #: templates/js/translated/sales_order.js:1584 msgid "Delete Stock Allocation" -msgstr "Slett lagertildeling" +msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 #: templates/js/translated/stock.js:1744 msgid "Shipped to customer" -msgstr "Sendt til kunde" +msgstr "" #: templates/js/translated/sales_order.js:1631 #: templates/js/translated/sales_order.js:1719 msgid "Stock location not specified" -msgstr "Lagerplassering ikke angitt" +msgstr "" #: templates/js/translated/sales_order.js:2008 msgid "Allocate serial numbers" -msgstr "Tildel serienumre" +msgstr "" #: templates/js/translated/sales_order.js:2012 msgid "Purchase stock" -msgstr "Kjøp lagerbeholdning" +msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" -msgstr "Beregn pris" +msgstr "" #: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been shipped" -msgstr "Kan ikke slettes ettersom varene er sendt" +msgstr "" #: templates/js/translated/sales_order.js:2038 msgid "Cannot be deleted as items have been allocated" -msgstr "Kan ikke slettes ettersom varene er tildelt" +msgstr "" #: templates/js/translated/sales_order.js:2109 msgid "Allocate Serial Numbers" -msgstr "Tildel serienummer" +msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" -msgstr "Oppdater enhetspris" +msgstr "" #: templates/js/translated/search.js:270 msgid "No results" -msgstr "Ingen resultater" +msgstr "" #: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" @@ -12538,826 +12808,822 @@ msgstr "Angi søkeord" #: templates/js/translated/search.js:342 msgid "result" -msgstr "resultat" +msgstr "" #: templates/js/translated/search.js:342 msgid "results" -msgstr "resultater" +msgstr "" #: templates/js/translated/search.js:352 msgid "Minimize results" -msgstr "Minimer resultater" +msgstr "" #: templates/js/translated/search.js:355 msgid "Remove results" -msgstr "Fjern resultater" +msgstr "" #: templates/js/translated/stock.js:98 msgid "Serialize Stock Item" -msgstr "Serialiser lagervare" +msgstr "" #: templates/js/translated/stock.js:129 msgid "Confirm Stock Serialization" -msgstr "Bekreft lagerserialisering" +msgstr "" #: templates/js/translated/stock.js:139 msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" -msgstr "Standard ikon for alle plasseringer som ikke har et ikon satt (valgfritt) - Utforsk alle tilgjengelige ikoner på" +msgstr "" #: templates/js/translated/stock.js:152 msgid "Parent stock location" -msgstr "Overordnet lagerplassering" +msgstr "" #: templates/js/translated/stock.js:166 msgid "Add Location type" -msgstr "Legg til plasseringstype" +msgstr "" #: templates/js/translated/stock.js:202 msgid "Edit Stock Location" -msgstr "Rediger plasseringstype" +msgstr "" #: templates/js/translated/stock.js:217 msgid "New Stock Location" -msgstr "Ny plasseringstype" +msgstr "" #: templates/js/translated/stock.js:219 msgid "Create another location after this one" -msgstr "Opprett ny plassering etter denne" +msgstr "" #: templates/js/translated/stock.js:220 msgid "Stock location created" -msgstr "Lagerplassering opprettet" +msgstr "" #: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" -msgstr "Er du sikker på at du vil slette denne lagerplasseringen?" +msgstr "" #: templates/js/translated/stock.js:241 msgid "Move to parent stock location" -msgstr "Flytt til overordnet lagerplassering" +msgstr "" #: templates/js/translated/stock.js:250 msgid "Delete Stock Location" -msgstr "Slett lagerplassering" +msgstr "" #: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" -msgstr "Handling for lagervarer på denne lagerplasseringen" +msgstr "" #: templates/js/translated/stock.js:259 msgid "Action for sub-locations" -msgstr "Handling for underplasseringer" +msgstr "" #: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" -msgstr "Denne delen kan ikke bli serialisert" +msgstr "" #: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" -msgstr "Legg til gitt mengde som pakker i stedet for enkeltprodukter" +msgstr "" #: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" -msgstr "Angi innledende antall for denne lagervaren" +msgstr "" #: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "Angi serienumre for ny lagerbeholdning (eller la stå tom)" +msgstr "" #: templates/js/translated/stock.js:439 msgid "Stock item duplicated" -msgstr "Lagervare duplisert" +msgstr "" #: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" -msgstr "Dupliser lagervare" +msgstr "" #: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" -msgstr "Er du sikker på at du vil slette denne lagervaren?" +msgstr "" #: templates/js/translated/stock.js:480 msgid "Delete Stock Item" -msgstr "Slett lagervare" +msgstr "" #: templates/js/translated/stock.js:501 msgid "Edit Stock Item" -msgstr "Rediger lagervare" +msgstr "" #: templates/js/translated/stock.js:543 msgid "Create another item after this one" -msgstr "Opprett ny artikkel etter denne" +msgstr "" #: templates/js/translated/stock.js:555 msgid "Created new stock item" -msgstr "Opprettet ny lagervare" +msgstr "" #: templates/js/translated/stock.js:568 msgid "Created multiple stock items" -msgstr "Opprettet nye lagervarer" +msgstr "" #: templates/js/translated/stock.js:593 msgid "Find Serial Number" -msgstr "Finn serienummer" +msgstr "" #: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "Skriv inn serienummer" +msgstr "" #: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "Skriv inn et serienummer" +msgstr "" #: templates/js/translated/stock.js:634 msgid "No matching serial number" -msgstr "Ingen samsvarende serienummer" +msgstr "" #: templates/js/translated/stock.js:643 msgid "More than one matching result found" -msgstr "Mer enn ett samsvarende resultat funnet" +msgstr "" #: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" -msgstr "Bekreft lagertildeling" +msgstr "" #: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" -msgstr "Tildel lagerbeholdning til kunde" +msgstr "" #: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" -msgstr "Advarsel: Sammenslåing kan ikke reverseres" +msgstr "" #: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" -msgstr "Noe informasjon vil gå tapt ved sammenslåing av lagervarer" +msgstr "" #: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" -msgstr "Lagertransaksjonshistorie vil bli slettet for sammenslåtte artikler" +msgstr "" #: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" -msgstr "Leverandørdelinformasjon vil bli slettet for sammenslåtte artikler" +msgstr "" #: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" -msgstr "Bekreft sammenslåing av lagervarer" +msgstr "" #: templates/js/translated/stock.js:929 msgid "Merge Stock Items" -msgstr "Slå sammen lagervarer" +msgstr "" #: templates/js/translated/stock.js:1024 msgid "Transfer Stock" -msgstr "Overfør lagerbeholdning" +msgstr "" #: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "Flytt" +msgstr "" #: templates/js/translated/stock.js:1031 msgid "Count Stock" -msgstr "Tell beholdning" +msgstr "" #: templates/js/translated/stock.js:1032 msgid "Count" -msgstr "Tell" +msgstr "" #: templates/js/translated/stock.js:1036 msgid "Remove Stock" -msgstr "Fjern lagerbeholdning" +msgstr "" #: templates/js/translated/stock.js:1037 msgid "Take" -msgstr "Ta" +msgstr "" #: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "Legg til lagerbeholdning" +msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "Legg til" #: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "Slett lagervare" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" -msgstr "Antall kan ikke justeres for serialisert lagervare" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" -msgstr "Angi lagermengde" +msgstr "" #: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" -msgstr "Velg lagervarer" +msgstr "" #: templates/js/translated/stock.js:1178 msgid "Select at least one available stock item" -msgstr "Velg minst en tilgjengelig lagervare" +msgstr "" #: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" -msgstr "Bekreft lagerjustering" +msgstr "" #: templates/js/translated/stock.js:1360 msgid "PASS" -msgstr "BESTÅTT" +msgstr "" #: templates/js/translated/stock.js:1362 msgid "FAIL" -msgstr "STRYK" +msgstr "" #: templates/js/translated/stock.js:1367 msgid "NO RESULT" -msgstr "INGEN RESULTAT" +msgstr "" #: templates/js/translated/stock.js:1429 msgid "Pass test" -msgstr "Bestå test" +msgstr "" #: templates/js/translated/stock.js:1432 msgid "Add test result" -msgstr "Legg til testresultat" +msgstr "" #: templates/js/translated/stock.js:1456 msgid "No test results found" -msgstr "Ingen resultater funnet" +msgstr "" #: templates/js/translated/stock.js:1520 msgid "Test Date" -msgstr "Testdato" +msgstr "" #: templates/js/translated/stock.js:1682 msgid "Edit Test Result" -msgstr "Rediger testresultat" +msgstr "" #: templates/js/translated/stock.js:1704 msgid "Delete Test Result" -msgstr "Slett testresultat" +msgstr "" #: templates/js/translated/stock.js:1736 msgid "In production" -msgstr "I produksjon" +msgstr "" #: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" -msgstr "Installert i lagervare" +msgstr "" #: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" -msgstr "Tildelt til Salgsordre" +msgstr "" #: templates/js/translated/stock.js:1754 msgid "No stock location set" -msgstr "Ingen lagerplassering satt" +msgstr "" #: templates/js/translated/stock.js:1810 msgid "Change stock status" -msgstr "Endre lagerstatus" +msgstr "" #: templates/js/translated/stock.js:1819 msgid "Merge stock" -msgstr "Slå sammen lagervarer" +msgstr "" #: templates/js/translated/stock.js:1868 msgid "Delete stock" -msgstr "Slett lagervare" +msgstr "" #: templates/js/translated/stock.js:1923 msgid "stock items" -msgstr "lagervarer" +msgstr "" #: templates/js/translated/stock.js:1928 msgid "Scan to location" -msgstr "Skann til plassering" +msgstr "" #: templates/js/translated/stock.js:1939 msgid "Stock Actions" -msgstr "Lagerhandlinger" +msgstr "" #: templates/js/translated/stock.js:1983 msgid "Load installed items" -msgstr "Last inn installerte elementer" +msgstr "" #: templates/js/translated/stock.js:2061 msgid "Stock item is in production" -msgstr "Lagervare er i produksjon" +msgstr "" #: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" -msgstr "Lagervaren er tildelt en salgsordre" +msgstr "" #: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" -msgstr "Lagervaren er tildelt en kunde" +msgstr "" #: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" -msgstr "Serialisert lagervare er allerede tildelt" +msgstr "" #: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" -msgstr "Alle linjer er fullt tildelt" +msgstr "" #: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" -msgstr "Lagervare er delvis tildelt" +msgstr "" #: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" -msgstr "Lagervare har blitt installert i en annen artikkel" +msgstr "" #: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" -msgstr "Lagervare har blitt konsumert av en produksjonsordre" +msgstr "" #: templates/js/translated/stock.js:2085 msgid "Stock item has expired" -msgstr "Lagervaren har utløpt" +msgstr "" #: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" -msgstr "Lagervare vil utløpe snart" +msgstr "" #: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" -msgstr "Lagervare har blitt avvist" +msgstr "" #: templates/js/translated/stock.js:2094 msgid "Stock item is lost" -msgstr "Lagervare er tapt" +msgstr "" #: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" -msgstr "Lagervare er ødelagt" +msgstr "" #: templates/js/translated/stock.js:2100 #: templates/js/translated/table_filters.js:350 msgid "Depleted" -msgstr "Oppbrukt" +msgstr "" #: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" -msgstr "Leverandørdel ikke angitt" +msgstr "" #: templates/js/translated/stock.js:2312 msgid "Stock Value" -msgstr "Lagerverdi" +msgstr "" #: templates/js/translated/stock.js:2440 msgid "No stock items matching query" -msgstr "Ingen lagervarer samsvarer med søket" +msgstr "" #: templates/js/translated/stock.js:2544 msgid "stock locations" -msgstr "lagerplasseringer" +msgstr "" #: templates/js/translated/stock.js:2699 msgid "Load Sublocations" -msgstr "Last underplasseringer" +msgstr "" #: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "Detaljer" +msgstr "" #: templates/js/translated/stock.js:2821 msgid "No changes" -msgstr "Ingen endringer" +msgstr "" #: templates/js/translated/stock.js:2833 msgid "Part information unavailable" -msgstr "Delinformasjon utilgjengelig" +msgstr "" #: templates/js/translated/stock.js:2855 msgid "Location no longer exists" -msgstr "Plasseringen eksisterer ikke lenger" +msgstr "" #: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" -msgstr "Produksjonsordre eksisterer ikke lenger" +msgstr "" #: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" -msgstr "Innkjøpsordre eksisterer ikke lenger" +msgstr "" #: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" -msgstr "Salgsordre eksisterer ikke lenger" +msgstr "" #: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" -msgstr "Returordre eksisterer ikke lenger" +msgstr "" #: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" -msgstr "Kunde eksisterer ikke lenger" +msgstr "" #: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" -msgstr "Lagervare eksisterer ikke lenger" +msgstr "" #: templates/js/translated/stock.js:2976 msgid "Added" -msgstr "Lagt til" +msgstr "" #: templates/js/translated/stock.js:2984 msgid "Removed" -msgstr "Fjernet" +msgstr "" #: templates/js/translated/stock.js:3056 msgid "No installed items" -msgstr "Ingen installerte elementer" +msgstr "" #: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" -msgstr "Avinstaller lagervare" +msgstr "" #: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" -msgstr "Velg lagervare å avinstallere" +msgstr "" #: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" -msgstr "Installer en annen lagervare på denne artikkelen" +msgstr "" #: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" -msgstr "Lagervarer kan bare installeres hvis de oppfyller følgende kriterier" +msgstr "" #: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" -msgstr "Lagervaren peker til en Del som er BOMen for denne lagervaren" +msgstr "" #: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" -msgstr "Lagervaren er for øyeblikket tilgjengelig på lager" +msgstr "" #: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" -msgstr "Lagervaren er ikke allerede installert i en annen artikkel" +msgstr "" #: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" -msgstr "Lagervaren er sporet enten via en batchkode eller serienummer" +msgstr "" #: templates/js/translated/stock.js:3205 msgid "Select part to install" -msgstr "Velg del å installere" +msgstr "" #: templates/js/translated/stock.js:3268 msgid "Select one or more stock items" -msgstr "Velg en eller flere lagervarer" +msgstr "" #: templates/js/translated/stock.js:3281 msgid "Selected stock items" -msgstr "Valgte lagervarer" +msgstr "" #: templates/js/translated/stock.js:3285 msgid "Change Stock Status" -msgstr "Endre lagerstatus" +msgstr "" #: templates/js/translated/table_filters.js:74 msgid "Has project code" -msgstr "Har prosjektkode" +msgstr "" #: templates/js/translated/table_filters.js:89 #: templates/js/translated/table_filters.js:601 #: templates/js/translated/table_filters.js:613 #: templates/js/translated/table_filters.js:654 msgid "Order status" -msgstr "Ordrestatus" +msgstr "" #: templates/js/translated/table_filters.js:94 #: templates/js/translated/table_filters.js:618 #: templates/js/translated/table_filters.js:644 #: templates/js/translated/table_filters.js:659 msgid "Outstanding" -msgstr "Utestående" +msgstr "" #: templates/js/translated/table_filters.js:102 #: templates/js/translated/table_filters.js:524 #: templates/js/translated/table_filters.js:626 #: templates/js/translated/table_filters.js:667 msgid "Assigned to me" -msgstr "Tilordnet meg" +msgstr "" #: templates/js/translated/table_filters.js:158 msgid "Trackable Part" -msgstr "Sporbar del" +msgstr "" #: templates/js/translated/table_filters.js:162 msgid "Assembled Part" -msgstr "Sammenstilt del" +msgstr "" #: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" -msgstr "Har tilgjengelig lagerbeholdning" +msgstr "" #: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" -msgstr "Tillat variantlagervarer" +msgstr "" #: templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:775 msgid "Has Pricing" -msgstr "Har prising" +msgstr "" #: templates/js/translated/table_filters.js:234 #: templates/js/translated/table_filters.js:345 msgid "Include sublocations" -msgstr "Inkluder underplasseringer" +msgstr "" #: templates/js/translated/table_filters.js:235 msgid "Include locations" -msgstr "Inkluder plasseringer" +msgstr "" #: templates/js/translated/table_filters.js:267 msgid "Has location type" -msgstr "Har plasseringstype" +msgstr "" #: templates/js/translated/table_filters.js:278 #: templates/js/translated/table_filters.js:279 #: templates/js/translated/table_filters.js:707 msgid "Include subcategories" -msgstr "Inkluder underkategorier" +msgstr "" #: templates/js/translated/table_filters.js:287 #: templates/js/translated/table_filters.js:755 msgid "Subscribed" -msgstr "Abonnerer" +msgstr "" #: templates/js/translated/table_filters.js:298 #: templates/js/translated/table_filters.js:380 msgid "Is Serialized" -msgstr "Er serialisert" +msgstr "" #: templates/js/translated/table_filters.js:301 #: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" -msgstr "Serenummer GTE" +msgstr "" #: templates/js/translated/table_filters.js:302 #: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" -msgstr "Serienummer mer enn eller lik" +msgstr "" #: templates/js/translated/table_filters.js:305 #: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" -msgstr "Serienummer LTE" +msgstr "" #: templates/js/translated/table_filters.js:306 #: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" -msgstr "Serienummer mindre enn eller lik" +msgstr "" #: templates/js/translated/table_filters.js:309 #: templates/js/translated/table_filters.js:310 #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "Serienummer" +msgstr "" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 msgid "Batch code" -msgstr "Batchkode" +msgstr "" #: templates/js/translated/table_filters.js:325 #: templates/js/translated/table_filters.js:696 msgid "Active parts" -msgstr "Aktive deler" +msgstr "" #: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" -msgstr "Vis lagerbeholdning for aktive deler" +msgstr "" #: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" -msgstr "Del er en sammenstilling" +msgstr "" #: templates/js/translated/table_filters.js:335 msgid "Is allocated" -msgstr "Er tildelt" +msgstr "" #: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" -msgstr "Artikkelen har blitt tildelt" +msgstr "" #: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" -msgstr "Lagerbeholdining er tilgjengelig for bruk" +msgstr "" #: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" -msgstr "Inkluder lager i underplasseringer" +msgstr "" #: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" -msgstr "Vis lagervarer som er oppbrukt" +msgstr "" #: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" -msgstr "Vis elementer som er på lager" - -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "Under produksjon" +msgstr "" #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" -msgstr "Vis elementer som er under produksjon" +msgstr "" #: templates/js/translated/table_filters.js:365 msgid "Include Variants" -msgstr "Inkluder varianter" +msgstr "" #: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" -msgstr "Inkluder lagervarer for variantdeler" +msgstr "" #: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" -msgstr "Vis lagervarer som er installert i andre elementer" +msgstr "" #: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" -msgstr "Vis elementer som er tildelt en kunde" +msgstr "" #: templates/js/translated/table_filters.js:396 #: templates/js/translated/table_filters.js:397 msgid "Stock status" -msgstr "Lagerstatus" +msgstr "" #: templates/js/translated/table_filters.js:400 msgid "Has batch code" -msgstr "Har batchkode" +msgstr "" #: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" -msgstr "Lagervare spores av enten batchkode eller serienummer" +msgstr "" #: templates/js/translated/table_filters.js:414 msgid "Has purchase price" -msgstr "Har innkjøpspris" +msgstr "" #: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" -msgstr "Vis lagervarer som har innkjøpspris" +msgstr "" #: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" -msgstr "Utløpsdato før" +msgstr "" #: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" -msgstr "Utløpsdato etter" +msgstr "" #: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" -msgstr "Vis lagervarer som har utløpt" +msgstr "" #: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" -msgstr "Vis lagerbeholdning som er nær å utløpe" +msgstr "" #: templates/js/translated/table_filters.js:456 msgid "Test Passed" -msgstr "Test bestått" +msgstr "" #: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" -msgstr "Inkluder installerte elementer" +msgstr "" #: templates/js/translated/table_filters.js:511 msgid "Build status" -msgstr "Produksjonsstatus" +msgstr "" #: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" -msgstr "Inkluder deler i underkategorier" +msgstr "" #: templates/js/translated/table_filters.js:713 msgid "Show active parts" -msgstr "Vis aktive deler" +msgstr "" #: templates/js/translated/table_filters.js:721 msgid "Available stock" -msgstr "Tilgjengelig lagerbeholdning" +msgstr "" #: templates/js/translated/table_filters.js:729 #: templates/js/translated/table_filters.js:825 msgid "Has Units" -msgstr "Har enheter" +msgstr "" #: templates/js/translated/table_filters.js:730 msgid "Part has defined units" -msgstr "Del har definerte enheter" +msgstr "" #: templates/js/translated/table_filters.js:734 msgid "Has IPN" -msgstr "Har IPN" +msgstr "" #: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" -msgstr "Delen har internt delnummer" +msgstr "" #: templates/js/translated/table_filters.js:739 msgid "In stock" -msgstr "På lager" +msgstr "" #: templates/js/translated/table_filters.js:747 msgid "Purchasable" -msgstr "Kan kjøpes" +msgstr "" #: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" -msgstr "Har lagertellingsoppføringer" +msgstr "" #: templates/js/translated/table_filters.js:821 msgid "Has Choices" -msgstr "Har valg" +msgstr "" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "Vis kalender" +msgstr "" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "Vis liste" +msgstr "" #: templates/js/translated/tables.js:112 msgid "Display tree view" -msgstr "Vis tre-visning" +msgstr "" #: templates/js/translated/tables.js:130 msgid "Expand all rows" -msgstr "Utvid alle rader" +msgstr "" #: templates/js/translated/tables.js:136 msgid "Collapse all rows" -msgstr "Skjul alle rader" +msgstr "" #: templates/js/translated/tables.js:186 msgid "Export Table Data" -msgstr "Eksporter tabelldata" +msgstr "" #: templates/js/translated/tables.js:190 msgid "Select File Format" -msgstr "Velg filformat" +msgstr "" #: templates/js/translated/tables.js:529 msgid "Loading data" -msgstr "Laster data" +msgstr "" #: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "rader per side" +msgstr "" #: templates/js/translated/tables.js:537 msgid "Showing all rows" -msgstr "Viser alle rader" +msgstr "" #: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "Viser" +msgstr "" #: templates/js/translated/tables.js:539 msgid "to" -msgstr "til" +msgstr "" #: templates/js/translated/tables.js:539 msgid "of" -msgstr "av" +msgstr "" #: templates/js/translated/tables.js:539 msgid "rows" -msgstr "rader" +msgstr "" #: templates/js/translated/tables.js:546 msgid "No matching results" -msgstr "Ingen passende treff" +msgstr "" #: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" -msgstr "Skjul/vis paginering" +msgstr "" #: templates/js/translated/tables.js:555 msgid "Toggle" -msgstr "Bytt" +msgstr "" #: templates/js/translated/tables.js:558 msgid "Columns" -msgstr "Kolonner" +msgstr "" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "Alle" +msgstr "" #: templates/navbar.html:45 msgid "Buy" @@ -13463,12 +13729,16 @@ msgstr "Ugyldig SSO-leverandør" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "Valgt SSO-leverandør er ugyldig, eller den er ikke riktig konfigurert" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" -msgstr "Du er i ferd med å bruke din %(provider_name)s konto for å logge inn på\n" -"%(site_name)s.
Som et siste steg, vennligst fullfør skjemaet:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" +msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 msgid "Provider has not been configured" @@ -13546,27 +13816,27 @@ msgstr "Ja" msgid "No" msgstr "Nei" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "Brukere" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "Velg hvilke brukere som er tilordnet denne gruppen" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "Følgende brukere er medlemmer av flere grupper" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "Personlig informasjon" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "Tillatelser" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "Viktige datoer" @@ -13610,35 +13880,35 @@ msgstr "Sist gang tokenet ble brukt" msgid "Revoked" msgstr "Tilbakekalt" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "Tillatelse satt" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "Gruppe" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "Visning" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "Tillatelse til å se elementer" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "Tillatelse til å legge til elementer" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "Endre" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Tillatelse til å endre elementer" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "Tillatelse til å slette elementer" diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po index 7ee35327e1..b19d9665e6 100644 --- a/InvenTree/locale/pl/LC_MESSAGES/django.po +++ b/InvenTree/locale/pl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "Nie znaleziono punktu końcowego API" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Użytkownik nie ma uprawnień do przeglądania tego modelu" @@ -43,7 +43,7 @@ msgstr "Podano nieprawidłową ilość" msgid "Invalid quantity supplied ({exc})" msgstr "Niepoprawna ilość ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Szczegóły błędu można znaleźć w panelu administracyjnym" @@ -51,18 +51,18 @@ msgstr "Szczegóły błędu można znaleźć w panelu administracyjnym" msgid "Enter date" msgstr "Wprowadź dane" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Podany podstawowy adres e-mail jest nieprawidłowy." msgid "The provided email domain is not approved." msgstr "Podany e-mail domeny nie został zatwierdzony." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Rejestracja jest wyłączona." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Podano nieprawidłową ilość" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Pusty ciąg numeru seryjnego" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Podwójny numer seryjny" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Nieprawidłowy zakres grupy: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Zakres grupy {group} przekracza dozwoloną ilość ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Nieprawidłowa kolejność grup: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Nie znaleziono numerów seryjnych" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Liczba unikalnych numerów seryjnych ({len(serials)}) musi odpowiadać ilości ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Usuń znaczniki HTML z tej wartości" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Błąd połączenia" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Serwer odpowiedział z nieprawidłowym kodem statusu" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Wystąpił wyjątek" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Serwer odpowiedział z nieprawidłową wartością Content-Length" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Rozmiar obrazu jest zbyt duży" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Przekroczono maksymalny rozmiar pobieranego obrazu" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Zdalny serwer zwrócił pustą odpowiedź" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Podany adres URL nie jest poprawnym plikiem obrazu" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Zaloguj się do aplikacji" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "bułgarski" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Czeski" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Duński" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Niemiecki" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Grecki" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Angielski" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Hiszpański" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Hiszpański (Meksyk)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Perski" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "fiński" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Francuski" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Hebrajski" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "hinduski" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Węgierski" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Włoski" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japoński" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Koreański" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Holenderski" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norweski" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Polski" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugalski" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugalski (Brazylijski)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Rosyjski" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Słoweński" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "serbski" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Szwedzki" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Tajski" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Turecki" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Wietnamski" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "chiński (uproszczony)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "chiński (tradycyjny)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "Adres E-Mail" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Metadane muszą być obiektem typu dict w Python" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Wtyczka Metadane" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" -msgstr "" +msgstr "Pole metadanych JSON, do użycia przez wtyczki zewnętrzne" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Nieprawidłowo sformatowany wzór" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Określono nieznany format klucza" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Brak wymaganego formatu klucza" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Pole odniesienia nie może być puste" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Odniesienie musi być zgodne z wymaganym wzorem" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Numer odniesienia jest zbyt duży" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Brak pliku" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Brak zewnętrznego odnośnika" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Załącznik" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Wybierz plik do załączenia" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Wybierz plik do załączenia" msgid "Link" msgstr "Łącze" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Link do zewnętrznego adresu URL" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Komentarz" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Komentarz pliku" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Użytkownik" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "data przesłania" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Nazwa pliku nie może być pusta" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Nieprawidłowy katalog załącznika" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Nazwa pliku zawiera niedozwolony znak '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Brak rozszerzenia w nazwie pliku" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Załącznik o tej nazwie już istnieje" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Błąd zmiany nazwy pliku" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Błędny wybór" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Błędny wybór" msgid "Name" msgstr "Nazwa" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "Nazwa" msgid "Description" msgstr "Opis" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Opis (opcjonalny)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "nadrzędny" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Ścieżka" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" -msgstr "" +msgstr "Notatki Markdown (opcjonalne)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Dane kodu kreskowego" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Dane kodu kreskowego stron trzecich" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Hasz kodu kreskowego" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Unikalny hasz danych kodu kreskowego" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Znaleziono istniejący kod kreskowy" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Błąd serwera" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Błąd został zapisany w logach serwera." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Numer musi być prawidłowy" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Waluta" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" -msgstr "" +msgstr "Wybierz walutę z dostępnych opcji" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." -msgstr "" +msgstr "Nie masz uprawnień do zmiany tej roli użytkownika." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" +msgstr "Tylko superużytkownicy mogą tworzyć nowych użytkowników" + +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Nazwa pliku" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Nieprawidłowa wartość" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Plik danych" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Wybierz plik danych do przesłania" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Nieobsługiwany typ pliku" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Plik jest zbyt duży" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Nie znaleziono kolumn w pliku" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Nie znaleziono wierszy danych w pliku" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Nie podano wierszy danych" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Nie podano kolumn danych" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Brakuje wymaganej kolumny: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Zduplikowana kolumna: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" -msgstr "" +msgstr "Obrazek zewnętrzny" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "Adres URL zdalnego pliku obrazu" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Pobieranie obrazów ze zdalnego URL nie jest włączone" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Czeski" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Duński" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Niemiecki" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Grecki" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Angielski" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Hiszpański" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Hiszpański (Meksyk)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Perski" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Francuski" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Hebrajski" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Węgierski" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Włoski" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japoński" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Koreański" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Holenderski" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norweski" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Polski" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugalski" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugalski (Brazylijski)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Rosyjski" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Słoweński" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Szwedzki" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Tajski" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Turecki" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Wietnamski" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Sprawdzenie robotnika w tle nie powiodło się" @@ -710,9 +720,9 @@ msgstr "Zwrócone" #: InvenTree/status_codes.py:40 InvenTree/status_codes.py:167 msgid "In Progress" -msgstr "" +msgstr "W trakcie" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -777,7 +787,7 @@ msgstr "Lokalizacja zmieniona" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "" +msgstr "Zaktualizowano stan magazynu" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" @@ -821,7 +831,7 @@ msgstr "Dane wyjściowe kolejności kompilacji ukończone" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "" +msgstr "Odrzucono wynik zlecenia produkcji" #: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" @@ -829,15 +839,15 @@ msgstr "Zużyte przez kolejność kompilacji" #: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" -msgstr "" +msgstr "Wysłane na podstawie zlecenia sprzedaży" #: InvenTree/status_codes.py:135 msgid "Received against Purchase Order" -msgstr "" +msgstr "Otrzymane na podstawie zlecenia zakupu" #: InvenTree/status_codes.py:138 msgid "Returned against Return Order" -msgstr "" +msgstr "Zwrócone na podstawie zlecenia zwrotu" #: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" @@ -853,35 +863,31 @@ msgstr "Produkcja" #: InvenTree/status_codes.py:185 msgid "Return" -msgstr "" +msgstr "Zwrot" #: InvenTree/status_codes.py:188 msgid "Repair" -msgstr "" +msgstr "Naprawa" #: InvenTree/status_codes.py:191 msgid "Replace" -msgstr "" +msgstr "Wymiana" #: InvenTree/status_codes.py:194 msgid "Refund" -msgstr "" +msgstr "Zwrot pieniędzy" #: InvenTree/status_codes.py:197 msgid "Reject" -msgstr "" +msgstr "Odrzuć" #: InvenTree/templatetags/inventree_extras.py:177 msgid "Unknown database" msgstr "Nieznana baza danych" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" -msgstr "" +msgstr "Niewłaściwa jednostka fizyczna" #: InvenTree/validators.py:39 msgid "Not a valid currency code" @@ -927,16 +933,16 @@ msgstr "O InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Kompilacja musi zostać anulowana, zanim będzie mogła zostać usunięta" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" -msgstr "" +msgstr "Materiał eksploatacyjny" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -946,20 +952,20 @@ msgstr "Opcjonalne" #: build/api.py:283 templates/js/translated/table_filters.js:408 #: templates/js/translated/table_filters.js:575 msgid "Tracked" -msgstr "" +msgstr "Śledzony" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "Przydzielono" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "Przydzielono" msgid "Available" msgstr "Dostępne" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Zlecenie Budowy" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "Zlecenie Budowy" msgid "Build Orders" msgstr "Zlecenia budowy" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Nieprawidłowy wybór kompilacji nadrzędnej" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Odwołanie do zamówienia wykonania" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "Odwołanie do zamówienia wykonania" msgid "Reference" msgstr "Referencja" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" -msgstr "" +msgstr "Krótki opis produkcji (opcjonalny)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Budowa nadrzędna" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Zamówienie budowy, do którego budowa jest przypisana" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,198 +1087,198 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" msgid "Part" msgstr "Komponent" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Wybierz część do budowy" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Odwołanie do zamówienia sprzedaży" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Zamówienie sprzedaży, do którego budowa jest przypisana" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Lokalizacja źródła" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Wybierz lokalizację, z której pobrać element do budowy (pozostaw puste, aby wziąć z dowolnej lokalizacji)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Lokalizacja docelowa" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Wybierz lokalizację, w której będą przechowywane ukończone elementy" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Ilość do stworzenia" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Ilość przedmiotów do zbudowania" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Ukończone elementy" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Ilość produktów magazynowych które zostały ukończone" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Status budowania" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Kod statusu budowania" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Kod partii" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Kod partii dla wyjścia budowy" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Data utworzenia" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Docelowy termin zakończenia" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Docelowa data zakończenia kompilacji. Po tej dacie kompilacja będzie zaległa." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Data zakończenia" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "zrealizowane przez" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Wydany przez" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Użytkownik, który wydał to zamówienie" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Odpowiedzialny" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" -msgstr "" +msgstr "Użytkownik lub grupa odpowiedzialna za te zlecenie produkcji" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Link Zewnętrzny" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" -msgstr "" +msgstr "Priorytet budowy" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" -msgstr "" +msgstr "Priorytet tego zamówienia produkcji" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 #: templates/js/translated/table_filters.js:48 #: templates/project_code_data.html:6 msgid "Project Code" -msgstr "" +msgstr "Kod projektu" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" -msgstr "" +msgstr "Kod projektu dla tego zlecenia produkcji" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Kolejność kompilacji {build} została zakończona" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "Kolejność kompilacji została zakończona" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Nie określono danych wyjściowych budowy" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "Budowanie wyjścia jest już ukończone" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "Skompilowane dane wyjściowe nie pasują do kolejności kompilacji" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "Ilość musi być większa niż zero" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" -msgstr "" +msgstr "Ilość nie może być większa niż ilość wyjściowa" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "Ilość" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" -msgstr "" +msgstr "Wymagana ilość dla zlecenia produkcji" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Alokowana ilość musi być większa niż zero" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "Element magazynowy" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Lokalizacja magazynowania przedmiotu" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Zainstaluj do" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Docelowa lokalizacja magazynowa przedmiotu" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Numer seryjny" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" -msgstr "" +msgstr "Automatycznie przydzielaj numery seryjne" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" -msgstr "" +msgstr "Automatycznie przydzielaj wymagane elementy z pasującymi numerami seryjnymi" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" -msgstr "" +msgstr "Poniższe numery seryjne już istnieją lub są nieprawidłowe" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "Lokalizacja" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" -msgstr "" +msgstr "Odrzuć przydziały" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "Status" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" -msgstr "" +msgstr "Usuń przydzielone zasoby" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" -msgstr "" +msgstr "Odejmij wszystkie zasoby, które zostały już przypisane do tej produkcji" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" -msgstr "" +msgstr "Usuń produkcje, które nie zostały zakończone" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" -msgstr "" +msgstr "Niedozwolone" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" -msgstr "" +msgstr "Zaakceptuj jako zużyte przez zlecenie produkcji" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" -msgstr "" +msgstr "Nadmierny przydział zasobów" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "Akceptuj niekompletne" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "Towar musi znajdować się w magazynie" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Magazyn, z którego mają być pozyskane elementy (pozostaw puste, aby pobrać z dowolnej lokalizacji)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "Wyklucz lokalizację" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "Wyklucz produkty magazynowe z wybranej lokalizacji" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Towary magazynowe w wielu lokalizacjach mogą być stosowane zamiennie" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "Zastępczy magazyn" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" -msgstr "" +msgstr "Przedmiot opcjonalny" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "Element BOM" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "W Zamówieniu" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "Dostępna ilość" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1658,7 +1693,7 @@ msgstr "" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" -msgstr "" +msgstr "Miniaturka przedmiotu" #: build/templates/build/build_base.html:38 #: company/templates/company/supplier_part.html:35 @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,9 +1864,9 @@ msgid "Issued By" msgstr "Dodane przez" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" -msgstr "" +msgstr "Priorytet" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" @@ -1857,7 +1892,7 @@ msgstr "Źródło magazynu" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "Przeznaczenie" @@ -1870,9 +1905,9 @@ msgstr "Nie określono lokalizacji docelowej" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "Partia" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "Utworzony" @@ -1985,11 +2020,11 @@ msgstr "Załączniki" msgid "Build Notes" msgstr "Notatki tworzenia" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "{name.title()} Plik" msgid "Select {name} file to upload" msgstr "Wybierz plik {name} do przesłania" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" -msgstr "" +msgstr "Zaktualizowany" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" +msgstr "Data ostatniej aktualizacji" + +#: common/models.py:105 +msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:127 +#: common/models.py:130 msgid "Unique project code" -msgstr "" +msgstr "Unikalny kod projektu" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" -msgstr "" +msgstr "Opis projektu" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" -msgstr "" +msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" -msgstr "" +msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter)" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "Ustawienia wartości" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" -msgstr "" +msgstr "Wybrana wartość nie jest poprawną opcją" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "Wartość musi być wartością binarną" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "Wartość musi być liczbą całkowitą" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "Ciąg musi być unikatowy" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "Brak grupy" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." -msgstr "" +msgstr "Pusta domena nie jest dozwolona." -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" -msgstr "" +msgstr "Niepoprawna nazwa domeny: {domain}" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" -msgstr "" +msgstr "Brak wtyczki" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "Wymagane ponowne uruchomienie" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "Zmieniono ustawienie, które wymaga restartu serwera" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" -msgstr "" +msgstr "Oczekujące migracje" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" -msgstr "" +msgstr "Liczba oczekujących migracji bazy danych" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" -msgstr "" +msgstr "Nazwa instancji serwera" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "Użyj nazwy instancji" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Nazwa firmy" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "Wewnętrzna nazwa firmy" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "Bazowy URL" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "Bazowy adres URL dla instancji serwera" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Domyślna waluta" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" -msgstr "" +msgstr "Interwał aktualizacji waluty" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" -msgstr "" +msgstr "Jak często aktualizować kursy wymiany walut (ustaw zero aby wyłączyć)" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "dni" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" -msgstr "" +msgstr "Wtyczka aktualizacji waluty" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "Pobierz z adresu URL" -#: common/models.py:1245 +#: common/models.py:1284 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:1251 +#: common/models.py:1290 msgid "Download Size Limit" -msgstr "" +msgstr "Limit rozmiaru pobierania" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" -msgstr "" - -#: common/models.py:1266 -msgid "Require schema specification when validating URLs" -msgstr "" - -#: common/models.py:1271 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1272 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1277 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1279 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1285 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1286 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1292 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1293 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1298 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1299 -msgid "Specify number of days between automated backup events" -msgstr "" +msgstr "Ścisła weryfikacja adresu URL" #: common/models.py:1305 -msgid "Task Deletion Interval" -msgstr "" +msgid "Require schema specification when validating URLs" +msgstr "Wymagaj specyfikacji schematu podczas sprawdzania poprawności adresów URL" -#: common/models.py:1307 +#: common/models.py:1310 +msgid "Require confirm" +msgstr "Wymagaj potwierdzenia" + +#: common/models.py:1311 +msgid "Require explicit user confirmation for certain action." +msgstr "Wymagaj wyraźnego potwierdzenia dla określonych działań." + +#: common/models.py:1316 +msgid "Tree Depth" +msgstr "Głębokość drzewa" + +#: common/models.py:1318 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "Domyślna głębokość drzewa dla widoku drzewa. Głębsze poziomy mogą być leniwe, gdy są potrzebne." + +#: common/models.py:1324 +msgid "Update Check Interval" +msgstr "Częstotliwość sprawdzania aktualizacji" + +#: common/models.py:1325 +msgid "How often to check for updates (set to zero to disable)" +msgstr "Jak często aktualizować kursy wymiany walut (ustaw zero aby wyłączyć)" + +#: common/models.py:1331 +msgid "Automatic Backup" +msgstr "Automatyczna kopia zapasowa" + +#: common/models.py:1332 +msgid "Enable automatic backup of database and media files" +msgstr "Włącz automatyczną kopię zapasową bazy danych i plików multimedialnych" + +#: common/models.py:1337 +msgid "Auto Backup Interval" +msgstr "Interwał automatycznego tworzenia kopii zapasowych" + +#: common/models.py:1338 +msgid "Specify number of days between automated backup events" +msgstr "Określ liczbę dni między zdarzeniami automatycznej kopii zapasowej" + +#: common/models.py:1344 +msgid "Task Deletion Interval" +msgstr "Interwał usuwania zadań" + +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Obsługa kodu kreskowego" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "Wyrażenie regularne IPN" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "Zezwól na powtarzający się IPN" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "Zezwól na edycję IPN" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "Skopiuj BOM komponentu" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Szablon" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Złożenie" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Komponent" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Możliwość zakupu" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "Części są domyślnie z możliwością zakupu" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Możliwość sprzedaży" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "Części są domyślnie z możliwością sprzedaży" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Możliwość śledzenia" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "Części są domyślnie z możliwością śledzenia" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Wirtualny" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "Części są domyślnie wirtualne" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "Ceny wewnętrzne" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "Włącz drukowanie etykiet" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "Włącz drukowanie etykiet z interfejsu WWW" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "DPI etykiety" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "Włącz raporty" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "Tryb Debugowania" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Rozmiar strony" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "Domyślna wielkość strony dla raportów PDF" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "Włącz generowanie raportów testów" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" -msgstr "" +msgstr "Automatycznie wypełniaj zlecenia zakupu" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" -msgstr "" +msgstr "Automatycznie oznacz zlecenia jako zakończone po odebraniu wszystkich pozycji" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "Włącz opcję zapomnianego hasła" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "Włącz funkcję zapomnianego hasła na stronach logowania" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "Włącz rejestrację" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "Włącz samodzielną rejestrację dla użytkowników na stronach logowania" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "Włącz SSO" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "Włącz SSO na stronach logowania" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "Adres e-mail jest wymagany" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "Autouzupełnianie użytkowników SSO" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "Automatycznie wypełnij dane użytkownika z danych konta SSO" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "E-mail dwa razy" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich adres e-mail" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "Hasło dwukrotnie" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich hasło" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "Grupuj przy rejestracji" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "Wymuś MFA" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "Użytkownicy muszą używać zabezpieczeń wieloskładnikowych." -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "Sprawdź wtyczki przy starcie" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "Włącz integrację URL" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "Włącz wtyczki, aby dodać ścieżki URL" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "Włącz integrację z aplikacją" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "Włącz wtyczki, aby dodać aplikacje" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "Włącz wtyczki, aby uruchamiać zaplanowane zadania" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "Pokaż obserwowane części" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "Pokaż obserwowane części na stronie głównej" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "Pokaż obserwowane kategorie" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "Pokaż obserwowane kategorie części na stronie głównej" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "Pokaż najnowsze części" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "Pokaż najnowsze części na stronie głównej" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "Pokaż niski stan magazynowy" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "Pokaż elementy o niskim stanie na stronie głównej" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "Pokaż wymagany stan zapasów" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "Szukaj części" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "Ukryj nieaktywne części" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" -msgstr "" +msgstr "Wyszukaj zlecenia zakupu" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" -msgstr "" +msgstr "Wyklucz nieaktywne zlecenia zakupu" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "Pokaż ilość w formularzach" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "Stały pasek nawigacyjny" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "Format daty" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "Preferowany format wyświetlania dat" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Planowanie komponentów" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Cena" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "Punkt końcowy" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "Aktywny" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "Sekret" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "Współdzielony sekret dla HMAC" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "Id wiadomości" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "Unikalny identyfikator dla tej wiadomości" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "Host, od którego otrzymano tę wiadomość" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "Nagłówek" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "Nagłówek tej wiadomości" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "Zawartość" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "Autor" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "Obraz" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "Poprzedni krok" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "Opis firmy" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "Opis firmy" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "Strona WWW" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "Witryna internetowa firmy" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Numer telefonu" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "Numer telefonu kontaktowego" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "Kontaktowy adres e-mail" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Kontakt" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "Punkt kontaktowy" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "Link do informacji o zewnętrznym przedsiębiorstwie" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "jest klientem" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "Czy sprzedajesz produkty tej firmie?" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "jest dostawcą" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "Czy kupujesz przedmioty od tej firmy?" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "jest producentem" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "Czy to przedsiębiorstwo produkuje części?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Firma" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Część bazowa" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "Wybierz część" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "Wybierz część" msgid "Manufacturer" msgstr "Producent" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Wybierz producenta" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "Wybierz producenta" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "Numer producenta komponentu" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Komponent producenta" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Wartość" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "Jednostki" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "Jednostki parametru" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "Dostawca" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Wybierz dostawcę" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "Uwaga" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "koszt podstawowy" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Opakowanie" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "Opakowanie części" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "Opakowanie części" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "wielokrotność" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "Pobierz obraz z adresu URL" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "Klient" msgid "Uses default currency" msgstr "Używa domyślnej waluty" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4128,12 +4244,12 @@ msgstr "" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "Załaduj obrazek" +msgstr "" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "Pobierz obraz" +msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 @@ -4180,12 +4296,12 @@ msgstr "Zapasy dostawcy" #: templates/js/translated/search.js:205 templates/navbar.html:50 #: users/models.py:195 msgid "Purchase Orders" -msgstr "Zamówienia zakupu" +msgstr "Zlecenia zakupu" #: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" -msgstr "Utwórz nowe zamówienie zakupu" +msgstr "Utwórz nowe zlecenie zakupu" #: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 @@ -4316,7 +4432,7 @@ msgstr "Nowy parametr" #: company/templates/company/manufacturer_part.html:206 #: templates/js/translated/part.js:1422 msgid "Add Parameter" -msgstr "Dodaj parametr" +msgstr "" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "Firmy" msgid "New Company" msgstr "Nowa firma" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "Nazwa etykiety" @@ -4500,7 +4620,7 @@ msgstr "Etykieta" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "Aktywne" @@ -4524,7 +4644,7 @@ msgstr "Wysokość [mm]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "Wzór nazwy pliku" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "Filtry" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4567,9 +4788,9 @@ msgstr "Cena całkowita" #: order/api.py:233 msgid "No matching purchase order found" -msgstr "" +msgstr "Nie znaleziono pasującego zlecenia zakupu" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "Zlecenie zakupu" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "Zlecenie zakupu" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "Link do zewnętrznej witryny" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "Utworzony przez" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "Odniesienie zamówienia" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "Status zamówienia zakupu" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "odebrane przez" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "Data wydania" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "Data wystawienia zamówienia" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "Wartość musi być liczbą dodatnią" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "Data wysyłki" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "wysłane przez" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "Ilość elementów" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "Zamówienie" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,336 +5004,336 @@ msgstr "" msgid "Received" msgstr "Odebrane" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Cena zakupu" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "Cena zakupu jednostkowego" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "Gdzie kupujący chce przechowywać ten przedmiot?" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Cena sprzedaży" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "Jednostkowa cena sprzedaży" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "Wysłana ilość" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "Data wysyłki" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "Sprawdzone przez" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "Użytkownik, który sprawdził tę wysyłkę" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Przesyłka" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "Numer przesyłki" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "Numer śledzenia" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "Informacje o śledzeniu przesyłki" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "Przesyłka została już wysłana" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Zarezerwowana ilość nie może przekraczać ilości na stanie" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "Linia" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "Komponent" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "Zamówienie nie może zostać anulowane" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" -msgstr "" +msgstr "Zlecenie zakupu musi być określone" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" -msgstr "" +msgstr "Dostawca musi być zgodny ze zleceniem zakupu" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" -msgstr "" +msgstr "Zlecenie zakupu musi być zgodne z dostawcą" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" -msgstr "" +msgstr "Pozycja nie pasuje do zlecenia zakupu" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Kod kreskowy" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" #: order/tasks.py:25 msgid "Overdue Purchase Order" -msgstr "" +msgstr "Zaległe zlecenie zakupu" #: order/tasks.py:30 #, python-brace-format msgid "Purchase order {po} is now overdue" -msgstr "" +msgstr "Zlecenie zakupu {po} jest teraz zaległe" #: order/tasks.py:75 msgid "Overdue Sales Order" @@ -5129,7 +5346,7 @@ msgstr "" #: order/templates/order/order_base.html:51 msgid "Print purchase order report" -msgstr "" +msgstr "Drukuj raport zlecenia zakupu" #: order/templates/order/order_base.html:53 #: order/templates/order/return_order_base.html:62 @@ -5289,8 +5506,8 @@ msgstr "Duplikuj wybrane" #: 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5351,7 +5568,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:18 msgid "Purchase Order Items" -msgstr "" +msgstr "Pozycje zlecenia zakupu" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 @@ -5373,13 +5590,13 @@ msgstr "" #: order/templates/order/return_order_detail.html:45 #: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" -msgstr "" +msgstr "Dodatkowe linie" #: order/templates/order/purchase_order_detail.html:56 #: order/templates/order/return_order_detail.html:51 #: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" -msgstr "" +msgstr "Dodaj dodatkową linię" #: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "ID komponentu" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "Nazwa komponentu" @@ -5523,20 +5740,20 @@ msgstr "Nazwa komponentu" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Wersja" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Słowa kluczowe" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Wariant" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimalny stan magazynowy" @@ -5575,33 +5792,26 @@ msgstr "Minimalny stan magazynowy" msgid "In Stock" msgstr "Na stanie" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "W Zamówieniu" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "Użyte w" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "Ścieżka kategorii" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "IPN komponentu" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" -msgstr "" +msgstr "Nadchodzące zlecenie zakupu" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "Ważny" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "Ta opcja musi być zaznaczona" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Domyślna lokalizacja" @@ -5690,380 +5900,375 @@ msgstr "Domyślna lokalizacja" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "Dostępna ilość" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Kategoria komponentu" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "Kategorie części" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "Domyślna lokalizacja dla komponentów w tej kategorii" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "Domyślne słowa kluczowe" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "Nieprawidłowy wybór dla części nadrzędnej" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "Nazwa komponentu" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "Czy szablon" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "Czy ta część stanowi szablon części?" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "Czy ta część jest wariantem innej części?" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "Kategoria" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "Domyślne wygasanie" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "Czy ten komponent może być zbudowany z innych komponentów?" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "Czy ta część może być użyta do budowy innych części?" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "Czy ta część wymaga śledzenia każdego towaru z osobna?" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "Czy ta część jest aktywna?" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "Czy to wirtualna część, taka jak oprogramowanie lub licencja?" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "Tworzenie użytkownika" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Ostatnia inwentaryzacja" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "Sprzedaj wiele" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "Data" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "Nazwa testu" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "Testowy opis" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "Wprowadź opis do tego testu" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Wymagane" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "Wymaga wartości" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "Wymaga załącznika" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "Część nadrzędna" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "Dane" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "Wartość parametru" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Wartość domyślna" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "Unikalny wartość ID komponentu" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "Wartość IPN części" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "Poziom" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "Element BOM" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "Wybierz część nadrzędną" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "Podczęść" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "Ten element BOM jest opcjonalny" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "Notatki pozycji BOM" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "Suma kontrolna" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Zatwierdzone" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Zezwalaj na warianty" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "Część zastępcza" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "Część 1" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "Część 2" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "Wybierz powiązaną część" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "Waluta zakupu tego towaru" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Duplikuj część" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "Usuń istniejące dane" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "Pomiń nieprawidłowe wiersze" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "Włącz tę opcję, aby pominąć nieprawidłowe wiersze" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "Wyczyść istniejący BOM" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "Nie podano ilości" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "Nieprawidłowa ilość" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -6939,11 +7140,11 @@ msgstr "Producenci części" #: part/templates/part/detail.html:659 msgid "Related Part" -msgstr "Powiązane części" +msgstr "" #: part/templates/part/detail.html:667 msgid "Add Related Part" -msgstr "Dodaj powiązaną część" +msgstr "" #: part/templates/part/detail.html:752 msgid "Add Test Result Template" @@ -7123,19 +7324,15 @@ msgstr "Szukaj numeru seryjnego" #: part/templates/part/part_base.html:444 msgid "Part QR Code" -msgstr "Kod QR części" +msgstr "" #: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" -msgstr "Oblicz" +msgstr "" #: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" @@ -7143,11 +7340,11 @@ msgstr "" #: part/templates/part/part_base.html:580 msgid "No matching images found" -msgstr "Nie znaleziono pasujących obrazów" +msgstr "" #: part/templates/part/part_base.html:676 msgid "Hide Part Details" -msgstr "Ukryj szczegóły części" +msgstr "" #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:76 #: part/templates/part/prices.html:227 templates/js/translated/pricing.js:485 @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "Nie znaleziono obrazka części" msgid "Part Pricing" msgstr "Cennik części" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "Nie określono działania" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Nie znaleziono pasującej akcji" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7483,28 +7684,28 @@ msgstr "" #: plugin/base/barcodes/mixins.py:197 #, python-brace-format msgid "Found multiple purchase orders matching '{order}'" -msgstr "" +msgstr "Znaleziono wiele zleceń zakupu pasujących do '{order}'" #: plugin/base/barcodes/mixins.py:201 #, python-brace-format msgid "No matching purchase order for '{order}'" -msgstr "" +msgstr "Nie znaleziono pasującego zlecenia zakupu dla '{order}'" #: plugin/base/barcodes/mixins.py:207 msgid "Purchase order does not match supplier" -msgstr "" +msgstr "Zlecenie zakupu nie pasuje do dostawcy" #: plugin/base/barcodes/mixins.py:441 msgid "Failed to find pending line item for supplier part" -msgstr "" +msgstr "Nie znaleziono pozycji oczekującej dla części od dostawcy" #: plugin/base/barcodes/mixins.py:472 msgid "Further information required to receive line item" -msgstr "" +msgstr "Dalsze informacje wymagane do odbioru pozycji" #: plugin/base/barcodes/mixins.py:480 msgid "Received purchase order line item" -msgstr "" +msgstr "Otrzymana pozycja zlecenia zakupu" #: plugin/base/barcodes/serializers.py:21 msgid "Scanned barcode data" @@ -7516,7 +7717,7 @@ msgstr "" #: plugin/base/barcodes/serializers.py:87 msgid "Purchase order is not pending" -msgstr "" +msgstr "Zlecenie zakupu nie jest oczekujące" #: plugin/base/barcodes/serializers.py:105 msgid "PurchaseOrder to receive items against" @@ -7524,7 +7725,7 @@ msgstr "" #: plugin/base/barcodes/serializers.py:111 msgid "Purchase order has not been placed" -msgstr "" +msgstr "Zlecenie zakupu nie zostało złożone" #: plugin/base/barcodes/serializers.py:119 msgid "Location to receive items into" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" +msgstr "" + +#: plugin/models.py:30 msgid "Plugin Configuration" msgstr "Konfiguracja wtyczki" -#: plugin/models.py:30 +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "Konfiguracja wtyczek" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "Klucz" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "Klucz wtyczki" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "Nazwa wtyczki" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "Nazwa pakietu" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "Czy wtyczka jest aktywna" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "Zainstalowane" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" +msgstr "Wtyczka wbudowana" + +#: plugin/models.py:173 +msgid "Package Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Wtyczka" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" -msgstr "" +msgstr "Metoda" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" -msgstr "" +msgstr "Nie znaleziono autora" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,90 +8114,104 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "Źródłowy adres URL" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Źródło pakietu - może to być niestandardowy rejestr lub ścieżka VCS" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "Nazwa pakietu" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Nazwa pakietu wtyczki - może również zawierać wskaźnik wersji" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "Wersja" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "Potwierdź instalację wtyczki" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Spowoduje to zainstalowanie tej wtyczki w bieżącej instancji. Instancja przejdzie do trybu konserwacji." -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "Instalacja nie została potwierdzona" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 -msgid "Full reload" -msgstr "" - -#: plugin/serializers.py:140 -msgid "Perform a full reload of the plugin registry" -msgstr "" - -#: plugin/serializers.py:146 -msgid "Force reload" -msgstr "" - -#: plugin/serializers.py:148 -msgid "Force a reload of the plugin registry, even if it is already loaded" -msgstr "" - -#: plugin/serializers.py:155 -msgid "Collect plugins" -msgstr "" - #: plugin/serializers.py:156 +msgid "Full reload" +msgstr "Pełne przeładowanie" + +#: plugin/serializers.py:157 +msgid "Perform a full reload of the plugin registry" +msgstr "Wykonaj pełne przeładowanie rejestru wtyczek" + +#: plugin/serializers.py:163 +msgid "Force reload" +msgstr "Wymuś przeładowanie" + +#: plugin/serializers.py:165 +msgid "Force a reload of the plugin registry, even if it is already loaded" +msgstr "Wymuś przeładowanie rejestru wtyczek, nawet jeśli jest już załadowany" + +#: plugin/serializers.py:172 +msgid "Collect plugins" +msgstr "Zbierz wtyczki" + +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" -msgstr "" +msgstr "Zbierz wtyczki i dodaj je do rejestru" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" +msgstr "Aktywuj wtyczkę" + +#: plugin/serializers.py:196 +msgid "Activate this plugin" +msgstr "Aktywuj tę wtyczkę" + +#: plugin/serializers.py:219 +msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:179 -msgid "Activate this plugin" +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" msgstr "" #: report/api.py:175 msgid "No valid objects provided to template" -msgstr "" +msgstr "Brak prawidłowych obiektów do szablonu" #: report/api.py:214 report/api.py:251 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" -msgstr "" +msgstr "Plik szablonu '{template}' jest brakujący lub nie istnieje" #: report/api.py:331 msgid "Test report" -msgstr "" +msgstr "Raporty z testów" #: report/helpers.py:15 msgid "A4" -msgstr "" +msgstr "A4" #: report/helpers.py:16 msgid "A3" -msgstr "" +msgstr "A3" #: report/helpers.py:17 msgid "Legal" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "Nazwa szablonu" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" -msgstr "" +msgstr "Plik szablonu raportu" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" -msgstr "" +msgstr "Opis szablonu raportu" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" -msgstr "" +msgstr "Numer zmiany raportu (przyrasta automatycznie)" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" -msgstr "" +msgstr "Domyślna wielkość strony dla raportów PDF" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" -msgstr "" - -#: report/models.py:309 -msgid "Pattern for generating report filenames" -msgstr "" +msgstr "Renderuj raport w orientacji poziomej" #: report/models.py:316 -msgid "Report template is enabled" -msgstr "" +msgid "Pattern for generating report filenames" +msgstr "Wzorzec generowania nazw plików raportu" -#: report/models.py:338 +#: report/models.py:323 +msgid "Report template is enabled" +msgstr "Szablon raportu jest włączony" + +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "Filtr części" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" -msgstr "" +msgstr "Filtry zapytania zleceń zakupu" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "Wycinek" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "Razem" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "Wynik" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "Zainstalowane elementy" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Numer seryjny" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "ID lokalizacji" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "Ścieżka lokalizacji" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "ID części dostawcy" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Zainstalowane w" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" -msgstr "" +msgstr "ID zlecenia zakupu" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "Data ważności" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "Lokacje stanu magazynowego" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Właściciel" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "Wybierz właściciela" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "Nadrzędny towar" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "Część podstawowa" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "Wybierz pasującą część dostawcy dla tego towaru" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "Ilość w magazynie" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" -msgstr "" - -#: stock/models.py:860 -msgid "Purchase order for this stock item" -msgstr "" +msgstr "Wyszukaj zlecenie zakupu" #: stock/models.py:866 +msgid "Purchase order for this stock item" +msgstr "Zlecenie zakupu dla tego towaru" + +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "Usuń po wyczerpaniu" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "Ilość musi być liczbą całkowitą" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "Numer seryjny już istnieje" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "Notatki do wpisu" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "Należy podać wartość dla tego testu" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "Nazwa testu" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "Wynik testu" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "Część musi być dostępna do sprzedaży" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Budowa" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "Lokacje nie są ustawione" @@ -8977,7 +9253,7 @@ msgstr "" #: stock/templates/stock/item_base.html:662 msgid "Return to Stock" -msgstr "Wróć do stanu magazynowego" +msgstr "" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." @@ -9142,15 +9418,15 @@ msgstr "Indeks" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "Obserwowane elementy" +msgstr "" #: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "Obserwowane kategorie" +msgstr "" #: templates/InvenTree/index.html:62 msgid "Latest Parts" -msgstr "Najnowsze części" +msgstr "" #: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" @@ -9162,7 +9438,7 @@ msgstr "" #: templates/InvenTree/index.html:134 msgid "Depleted Stock" -msgstr "Wyczerpane stany magazynowe" +msgstr "" #: templates/InvenTree/index.html:148 msgid "Required for Build Orders" @@ -9182,23 +9458,23 @@ msgstr "" #: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "Zaległe zlecenia budowy" +msgstr "" #: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" -msgstr "Trwające zlecenia zakupu" +msgstr "" #: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" -msgstr "Zaległe zlecenia zakupu" +msgstr "" #: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" -msgstr "Trwające zlecenia sprzedaży" +msgstr "" #: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" -msgstr "Zaległe zlecenia sprzedaży" +msgstr "" #: templates/InvenTree/index.html:299 msgid "InvenTree News" @@ -9412,11 +9688,6 @@ msgstr "Wiadomość" msgid "Plugin information" msgstr "Informacje o wtyczce" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "Wersja" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "brak dostarczonych informacji o wersji" @@ -9489,7 +9760,7 @@ msgstr "Wiadomość commitu" #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" -msgstr "" +msgstr "Ustawienia zlecenia zakupu" #: templates/InvenTree/settings/pricing.html:7 msgid "Pricing Settings" @@ -9545,7 +9816,7 @@ msgstr "Edytuj ustawienie" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" -msgstr "Edytuj ustawienie wtyczki" +msgstr "" #: templates/InvenTree/settings/settings_js.html:60 msgid "Edit Notification Setting" @@ -9553,11 +9824,11 @@ msgstr "" #: templates/InvenTree/settings/settings_js.html:63 msgid "Edit Global Setting" -msgstr "Edytuj ustawienie globalne" +msgstr "" #: templates/InvenTree/settings/settings_js.html:65 msgid "Edit User Setting" -msgstr "Edytuj ustawienie użytkownika" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:49 msgid "Rate" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Usuń" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -9603,17 +9874,17 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:285 msgid "No category parameter templates found" -msgstr "Nie znaleziono szablonów parametrów kategorii" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 #: templates/js/translated/part.js:1645 msgid "Edit Template" -msgstr "Edytuj szablon" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 #: templates/js/translated/part.js:1646 msgid "Delete Template" -msgstr "Usuń szablon" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:326 msgid "Edit Category Parameter Template" @@ -9853,7 +10124,7 @@ msgstr "%(time)s temu" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "Czy na pewno chcesz usunąć wybrany adres e-mail?" +msgstr "" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "Zarejestruj się" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "Wymagana ilość" @@ -10272,59 +10543,59 @@ msgstr "Minimalna ilość" #: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" -msgstr "Brak odpowiedzi" +msgstr "" #: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" -msgstr "Brak odpowiedzi z serwera InvenTree" +msgstr "" #: templates/js/translated/api.js:232 msgid "Error 400: Bad request" -msgstr "Błąd 400: Błędne żądanie" +msgstr "" #: templates/js/translated/api.js:233 msgid "API request returned error code 400" -msgstr "Żądanie interfejsu API zwróciło kod błędu 400" +msgstr "" #: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" -msgstr "Błąd 401: Nieuwierzytelniony" +msgstr "" #: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" -msgstr "Dane uwierzytelniające nie zostały dostarczone" +msgstr "" #: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" -msgstr "Błąd 403: Odmowa dostępu" +msgstr "" #: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "Nie masz uprawnień wymaganych do dostępu do tej funkcji" +msgstr "" #: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" -msgstr "Błąd 404: Nie znaleziono zasobu" +msgstr "" #: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" -msgstr "Żądany zasób nie mógł być zlokalizowany na serwerze" +msgstr "" #: templates/js/translated/api.js:252 msgid "Error 405: Method Not Allowed" -msgstr "Błąd 405: Metoda nie jest dozwolona" +msgstr "" #: templates/js/translated/api.js:253 msgid "HTTP method not allowed at URL" -msgstr "Metoda HTTP nie jest dozwolona pod tym adresem URL" +msgstr "" #: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "Błąd 408: Przekroczony limit czasu" +msgstr "" #: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" -msgstr "Limit czasu połączenia podczas żądania danych z serwera" +msgstr "" #: templates/js/translated/api.js:261 msgid "Error 503: Service Unavailable" @@ -10336,11 +10607,11 @@ msgstr "" #: templates/js/translated/api.js:265 msgid "Unhandled Error Code" -msgstr "Nieobsługiwany kod błędu" +msgstr "" #: templates/js/translated/api.js:266 msgid "Error code" -msgstr "Kod błędu" +msgstr "" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" @@ -10360,23 +10631,23 @@ msgstr "" #: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "Nie znaleziono załączników" +msgstr "" #: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "Edytuj załącznik" +msgstr "" #: templates/js/translated/attachment.js:346 msgid "Upload Date" -msgstr "Data przesłania" +msgstr "" #: templates/js/translated/attachment.js:366 msgid "Edit attachment" -msgstr "Edytuj załącznik" +msgstr "" #: templates/js/translated/attachment.js:374 msgid "Delete attachment" -msgstr "Usuń załącznik" +msgstr "" #: templates/js/translated/barcode.js:43 msgid "Scan barcode data here using barcode scanner" @@ -10384,7 +10655,7 @@ msgstr "" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "Wprowadź dane kodu kreskowego" +msgstr "" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" @@ -10396,20 +10667,20 @@ msgstr "" #: templates/js/translated/barcode.js:139 msgid "Enter notes" -msgstr "Wprowadź notatki" +msgstr "" #: templates/js/translated/barcode.js:188 msgid "Server error" -msgstr "Błąd serwera" +msgstr "" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" -msgstr "Nieznana odpowiedź serwera" +msgstr "" #: templates/js/translated/barcode.js:252 #: templates/js/translated/modals.js:1120 msgid "Invalid server response" -msgstr "Niepoprawna odpowiedź serwera" +msgstr "" #: templates/js/translated/barcode.js:372 msgid "Scan barcode data" @@ -10421,7 +10692,7 @@ msgstr "Zeskanuj kod kreskowy" #: templates/js/translated/barcode.js:458 msgid "No URL in response" -msgstr "Brak adresu URL w odpowiedzi" +msgstr "" #: templates/js/translated/barcode.js:498 msgid "This will remove the link to the associated barcode" @@ -10429,7 +10700,7 @@ msgstr "" #: templates/js/translated/barcode.js:504 msgid "Unlink" -msgstr "Rozłącz" +msgstr "" #: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 msgid "Remove stock item" @@ -10446,7 +10717,7 @@ msgstr "" #: templates/js/translated/barcode.js:615 #: templates/js/translated/barcode.js:812 msgid "Check In" -msgstr "Sprawdź" +msgstr "" #: templates/js/translated/barcode.js:647 msgid "No barcode provided" @@ -10495,11 +10766,11 @@ msgstr "" #: templates/js/translated/bom.js:132 msgid "Display row data" -msgstr "Wyświetl dane wiersza" +msgstr "" #: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "Dane wiersza" +msgstr "" #: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 #: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 @@ -10511,7 +10782,7 @@ msgstr "Zamknij" #: templates/js/translated/bom.js:306 msgid "Download BOM Template" -msgstr "Pobierz szablon BOM-u" +msgstr "" #: templates/js/translated/bom.js:351 msgid "Multi Level BOM" @@ -10523,7 +10794,7 @@ msgstr "" #: templates/js/translated/bom.js:357 msgid "Levels" -msgstr "Poziomy" +msgstr "" #: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" @@ -10595,7 +10866,7 @@ msgstr "" #: templates/js/translated/bom.js:701 msgid "Add Substitute" -msgstr "Dodaj zamiennik" +msgstr "" #: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10686,13 +10957,13 @@ msgstr "" #: templates/js/translated/bom.js:1307 msgid "View BOM" -msgstr "Zobacz BOM" +msgstr "" #: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,375 +10975,375 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" -msgstr "Czy na pewno przerwać tę budowę?" +msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "Ostatni numer seryjny" +msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" -msgstr "Utwórz zlecenie budowy" +msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" -msgstr "Wyjście" +msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "Wybierz części" +msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" -msgstr "Wybierz" +msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" -msgstr "Brak informacji o użytkowniku" +msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" #: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "Dodaj producenta" +msgstr "" #: templates/js/translated/company.js:111 #: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "Dodaj część producenta" +msgstr "" #: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" @@ -11081,7 +11352,7 @@ msgstr "" #: templates/js/translated/company.js:201 #: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "Dodaj dostawcę" +msgstr "" #: templates/js/translated/company.js:243 #: templates/js/translated/purchase_order.js:352 @@ -11090,7 +11361,7 @@ msgstr "" #: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" -msgstr "Wszystkie wybrane komponenty dostawcy zostaną usunięte" +msgstr "" #: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" @@ -11098,7 +11369,7 @@ msgstr "" #: templates/js/translated/company.js:465 msgid "Add new Company" -msgstr "Dodaj nową firmę" +msgstr "" #: templates/js/translated/company.js:536 msgid "Parts Supplied" @@ -11205,12 +11476,12 @@ msgstr "" #: templates/js/translated/company.js:1165 msgid "Delete Parameters" -msgstr "Usuń parametry" +msgstr "" #: templates/js/translated/company.js:1181 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 msgid "Order parts" -msgstr "Zamów komponenty" +msgstr "" #: templates/js/translated/company.js:1198 msgid "Delete manufacturer parts" @@ -11238,23 +11509,23 @@ msgstr "" #: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464 msgid "No parameters found" -msgstr "Nie znaleziono parametrów" +msgstr "" #: templates/js/translated/company.js:1428 templates/js/translated/part.js:1527 msgid "Edit parameter" -msgstr "Edytuj Parametr" +msgstr "" #: templates/js/translated/company.js:1429 templates/js/translated/part.js:1528 msgid "Delete parameter" -msgstr "Usuń parametr" +msgstr "" #: templates/js/translated/company.js:1446 templates/js/translated/part.js:1433 msgid "Edit Parameter" -msgstr "Edytuj Parametr" +msgstr "" #: templates/js/translated/company.js:1455 templates/js/translated/part.js:1549 msgid "Delete Parameter" -msgstr "Usuń parametr" +msgstr "" #: templates/js/translated/company.js:1486 msgid "Delete supplier parts" @@ -11288,7 +11559,7 @@ msgstr "" #: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" -msgstr "Edytuj przedział cenowy" +msgstr "" #: templates/js/translated/company.js:1794 msgid "No price break information found" @@ -11296,11 +11567,11 @@ msgstr "" #: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "Ostatnio aktualizowane" +msgstr "" #: templates/js/translated/company.js:1830 msgid "Edit price break" -msgstr "Edytuj przedział cenowy" +msgstr "" #: templates/js/translated/company.js:1831 msgid "Delete price break" @@ -11309,16 +11580,16 @@ msgstr "" #: templates/js/translated/filters.js:186 #: templates/js/translated/filters.js:672 msgid "true" -msgstr "prawda" +msgstr "" #: templates/js/translated/filters.js:190 #: templates/js/translated/filters.js:673 msgid "false" -msgstr "fałsz" +msgstr "" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "Wybierz filtr" +msgstr "" #: templates/js/translated/filters.js:437 msgid "Print Labels" @@ -11338,44 +11609,44 @@ msgstr "" #: templates/js/translated/filters.js:469 msgid "Add new filter" -msgstr "Dodaj nowy filtr" +msgstr "" #: templates/js/translated/filters.js:477 msgid "Clear all filters" -msgstr "Wyczyść wszystkie filtry" +msgstr "" #: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "Utwórz filtr" +msgstr "" #: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 #: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" -msgstr "Działanie zabronione" +msgstr "" #: templates/js/translated/forms.js:376 msgid "Create operation not allowed" -msgstr "Operacja utworzenia nie jest dozwolona" +msgstr "" #: templates/js/translated/forms.js:391 msgid "Update operation not allowed" -msgstr "Operacja aktualizacji nie jest dozwolona" +msgstr "" #: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" -msgstr "Operacja usuwania nie jest dozwolona" +msgstr "" #: templates/js/translated/forms.js:419 msgid "View operation not allowed" -msgstr "Operacja przeglądania nie jest dozwolona" +msgstr "" #: templates/js/translated/forms.js:796 msgid "Keep this form open" -msgstr "Pozostaw ten formularz otwarty" +msgstr "" #: templates/js/translated/forms.js:899 msgid "Enter a valid number" -msgstr "Wprowadź poprawny numer" +msgstr "" #: templates/js/translated/forms.js:1469 templates/modals.html:19 #: templates/modals.html:43 @@ -11384,35 +11655,35 @@ msgstr "Istnieją błędy formularza" #: templates/js/translated/forms.js:1967 msgid "No results found" -msgstr "Nie znaleziono wyników" +msgstr "" #: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239 msgid "Searching" -msgstr "Wyszukiwanie" +msgstr "" #: templates/js/translated/forms.js:2485 msgid "Clear input" -msgstr "Wyczyść wejście" +msgstr "" #: templates/js/translated/forms.js:3071 msgid "File Column" -msgstr "Kolumna pliku" +msgstr "" #: templates/js/translated/forms.js:3071 msgid "Field Name" -msgstr "Nazwa pola" +msgstr "" #: templates/js/translated/forms.js:3083 msgid "Select Columns" -msgstr "Wybór Kolumn" +msgstr "" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "TAK" +msgstr "" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "Nie" +msgstr "" #: templates/js/translated/helpers.js:93 msgid "True" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11440,7 +11707,7 @@ msgstr "" #: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "Nie znaleziono etykiet" +msgstr "" #: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" @@ -11481,7 +11748,7 @@ msgstr "" #: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 #: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "Anuluj" +msgstr "" #: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 #: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 @@ -11491,51 +11758,51 @@ msgstr "Zatwierdź" #: templates/js/translated/modals.js:156 msgid "Form Title" -msgstr "Tytuł formularza" +msgstr "" #: templates/js/translated/modals.js:445 msgid "Waiting for server..." -msgstr "Oczekiwanie na serwer..." +msgstr "" #: templates/js/translated/modals.js:596 msgid "Show Error Information" -msgstr "Pokaż informacje o błędzie" +msgstr "" #: templates/js/translated/modals.js:682 msgid "Accept" -msgstr "Zaakceptuj" +msgstr "" #: templates/js/translated/modals.js:740 msgid "Loading Data" -msgstr "Wczytywanie danych" +msgstr "" #: templates/js/translated/modals.js:1011 msgid "Invalid response from server" -msgstr "Niepoprawna odpowiedź serwera" +msgstr "" #: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" -msgstr "Brak danych formularza z odpowiedzi serwera" +msgstr "" #: templates/js/translated/modals.js:1023 msgid "Error posting form data" -msgstr "Błąd podczas wysyłania danych formularza" +msgstr "" #: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" -msgstr "Brak danych w formularzu odpowiedzi JSON" +msgstr "" #: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" -msgstr "400: Nieprawidłowe zapytanie" +msgstr "" #: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" -msgstr "Serwer zwrócił kod błędu 400" +msgstr "" #: templates/js/translated/modals.js:1159 msgid "Error requesting form data" -msgstr "Błąd podczas żądania danych formularza" +msgstr "" #: templates/js/translated/news.js:33 msgid "No news found" @@ -11610,7 +11877,7 @@ msgstr "" #: templates/js/translated/part.js:90 msgid "Part Attributes" -msgstr "Atrybuty części" +msgstr "" #: templates/js/translated/part.js:94 msgid "Part Creation Options" @@ -11634,7 +11901,7 @@ msgstr "" #: templates/js/translated/part.js:352 msgid "Create Part Category" -msgstr "Utwórz nową kategorię części" +msgstr "" #: templates/js/translated/part.js:355 msgid "Create new category after this one" @@ -11646,11 +11913,11 @@ msgstr "" #: templates/js/translated/part.js:370 msgid "Edit Part Category" -msgstr "Edytuj kategorię części" +msgstr "" #: templates/js/translated/part.js:383 msgid "Are you sure you want to delete this part category?" -msgstr "Czy na pewno chcesz usunąć tę kategorię części?" +msgstr "" #: templates/js/translated/part.js:388 msgid "Move to parent category" @@ -11670,27 +11937,27 @@ msgstr "" #: templates/js/translated/part.js:430 msgid "Create Part" -msgstr "Utwórz część" +msgstr "" #: templates/js/translated/part.js:432 msgid "Create another part after this one" -msgstr "Utwórz kolejną część po tej" +msgstr "" #: templates/js/translated/part.js:433 msgid "Part created successfully" -msgstr "Część utworzona pomyślnie" +msgstr "" #: templates/js/translated/part.js:461 msgid "Edit Part" -msgstr "Edytuj część" +msgstr "" #: templates/js/translated/part.js:463 msgid "Part edited" -msgstr "Część zmodyfikowana" +msgstr "" #: templates/js/translated/part.js:474 msgid "Create Part Variant" -msgstr "Utwórz wariant części" +msgstr "" #: templates/js/translated/part.js:531 msgid "Active Part" @@ -11722,19 +11989,19 @@ msgstr "" #: templates/js/translated/part.js:593 msgid "You are subscribed to notifications for this item" -msgstr "Masz włączone powiadomienia dla tej części" +msgstr "" #: templates/js/translated/part.js:595 msgid "You have subscribed to notifications for this item" -msgstr "Masz włączone powiadomienia dla tej części" +msgstr "" #: templates/js/translated/part.js:600 msgid "Subscribe to notifications for this item" -msgstr "Włącz powiadomienia dla tej części" +msgstr "" #: templates/js/translated/part.js:602 msgid "You have unsubscribed to notifications for this item" -msgstr "Zostałeś wypisany z powiadomień dla tej części" +msgstr "" #: templates/js/translated/part.js:619 msgid "Validating the BOM will mark each line item as valid" @@ -11775,7 +12042,7 @@ msgstr "" #: templates/js/translated/part.js:806 msgid "Subscribed part" -msgstr "Obserwowane części" +msgstr "" #: templates/js/translated/part.js:810 msgid "Salable part" @@ -11811,11 +12078,11 @@ msgstr "" #: templates/js/translated/part.js:1281 msgid "No variants found" -msgstr "Nie znaleziono wariantów" +msgstr "" #: templates/js/translated/part.js:1599 msgid "No part parameter templates found" -msgstr "Nie znaleziono szablonów parametrów części" +msgstr "" #: templates/js/translated/part.js:1662 msgid "Edit Part Parameter Template" @@ -11856,7 +12123,7 @@ msgstr "" #: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 msgid "No parts found" -msgstr "Nie znaleziono części" +msgstr "" #: templates/js/translated/part.js:2200 msgid "Set the part category for the selected parts" @@ -11864,11 +12131,15 @@ msgstr "" #: templates/js/translated/part.js:2205 msgid "Set Part Category" -msgstr "Ustaw kategorię części" +msgstr "" #: templates/js/translated/part.js:2235 msgid "Set category" -msgstr "Ustaw kategorię" +msgstr "" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" #: templates/js/translated/part.js:2288 msgid "parts" @@ -11876,16 +12147,16 @@ msgstr "" #: templates/js/translated/part.js:2384 msgid "No category" -msgstr "Brak kategorii" +msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2640 msgid "Display as list" -msgstr "Wyświetl jako listę" +msgstr "" #: templates/js/translated/part.js:2547 msgid "Display as grid" -msgstr "Wyświetl jako siatkę" +msgstr "" #: templates/js/translated/part.js:2645 msgid "No subcategories found" @@ -11893,7 +12164,7 @@ msgstr "" #: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "Wyświetl jako drzewo" +msgstr "" #: templates/js/translated/part.js:2761 msgid "Load Subcategories" @@ -11901,7 +12172,7 @@ msgstr "" #: templates/js/translated/part.js:2777 msgid "Subscribed category" -msgstr "Obserwowana kategoria" +msgstr "" #: templates/js/translated/part.js:2854 msgid "No test templates matching query" @@ -12070,7 +12341,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:206 msgid "Edit Purchase Order" -msgstr "Edytuj zamówienie zakupu" +msgstr "" #: templates/js/translated/purchase_order.js:223 msgid "Duplication Options" @@ -12084,7 +12355,7 @@ msgstr "" #: templates/js/translated/return_order.js:210 #: templates/js/translated/sales_order.js:500 msgid "Mark this order as complete?" -msgstr "Oznacz zamówienie jako zakończone?" +msgstr "" #: templates/js/translated/purchase_order.js:473 msgid "All line items have been received" @@ -12195,16 +12466,16 @@ msgstr "" #: templates/js/translated/purchase_order.js:1301 msgid "Order Code" -msgstr "Kod zamówienia" +msgstr "" #: templates/js/translated/purchase_order.js:1303 msgid "Quantity to Receive" -msgstr "Ilość do otrzymania" +msgstr "" #: templates/js/translated/purchase_order.js:1329 #: templates/js/translated/return_order.js:561 msgid "Confirm receipt of items" -msgstr "Potwierdź odbiór elementów" +msgstr "" #: templates/js/translated/purchase_order.js:1330 msgid "Receive Purchase Order Items" @@ -12234,7 +12505,7 @@ msgstr "" #: templates/js/translated/sales_order.js:851 #: templates/js/translated/sales_order.js:1011 msgid "Items" -msgstr "Przedmioty" +msgstr "" #: templates/js/translated/purchase_order.js:1840 msgid "All selected Line items will be deleted" @@ -12335,14 +12606,14 @@ msgstr "" #: templates/js/translated/return_order.js:300 #: templates/js/translated/sales_order.js:788 msgid "Invalid Customer" -msgstr "Nieprawidłowy klient" +msgstr "" #: templates/js/translated/return_order.js:562 msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12416,44 +12687,44 @@ msgstr "" #: templates/js/translated/sales_order.js:728 msgid "No sales orders found" -msgstr "Nie znaleziono zamówień sprzedaży" +msgstr "" #: templates/js/translated/sales_order.js:908 msgid "Edit shipment" -msgstr "Edytuj wysyłkę" +msgstr "" #: templates/js/translated/sales_order.js:911 msgid "Complete shipment" -msgstr "Kompletna wysyłka" +msgstr "" #: templates/js/translated/sales_order.js:916 msgid "Delete shipment" -msgstr "Usuń wysyłkę" +msgstr "" #: templates/js/translated/sales_order.js:933 msgid "Edit Shipment" -msgstr "Edytuj wysyłkę" +msgstr "" #: templates/js/translated/sales_order.js:948 msgid "Delete Shipment" -msgstr "Usuń wysyłkę" +msgstr "" #: templates/js/translated/sales_order.js:981 msgid "No matching shipments found" -msgstr "Nie odnaleziono pasujących przesyłek" +msgstr "" #: templates/js/translated/sales_order.js:1006 msgid "Shipment Reference" -msgstr "Numer referencyjny przesyłki" +msgstr "" #: templates/js/translated/sales_order.js:1030 #: templates/js/translated/sales_order.js:1529 msgid "Not shipped" -msgstr "Nie wysłano" +msgstr "" #: templates/js/translated/sales_order.js:1048 msgid "Tracking" -msgstr "Śledzenie" +msgstr "" #: templates/js/translated/sales_order.js:1052 msgid "Invoice" @@ -12465,7 +12736,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1270 msgid "Confirm stock allocation" -msgstr "Potwierdź przydział zapasów" +msgstr "" #: templates/js/translated/sales_order.js:1271 msgid "Allocate Stock Items to Sales Order" @@ -12504,12 +12775,12 @@ msgstr "" #: templates/js/translated/sales_order.js:2012 msgid "Purchase stock" -msgstr "Cena zakupu" +msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" -msgstr "Oblicz cenę" +msgstr "" #: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been shipped" @@ -12523,9 +12794,9 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" -msgstr "Zaktualizuj cenę jednostkową" +msgstr "" #: templates/js/translated/search.js:270 msgid "No results" @@ -12589,7 +12860,7 @@ msgstr "" #: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" -msgstr "Czy na pewno chcesz skasować tą lokację?" +msgstr "" #: templates/js/translated/stock.js:241 msgid "Move to parent stock location" @@ -12633,7 +12904,7 @@ msgstr "" #: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" -msgstr "Czy na pewno chcesz usunąć tą część?" +msgstr "" #: templates/js/translated/stock.js:480 msgid "Delete Stock Item" @@ -12713,7 +12984,7 @@ msgstr "" #: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "Przenieś" +msgstr "" #: templates/js/translated/stock.js:1031 msgid "Count Stock" @@ -12729,19 +13000,19 @@ msgstr "" #: templates/js/translated/stock.js:1037 msgid "Take" -msgstr "Weź" +msgstr "" #: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "Dodaj stan" +msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "Dodaj" #: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "Usuń stan magazynowy" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" @@ -12753,7 +13024,7 @@ msgstr "" #: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" -msgstr "Wybierz przedmioty magazynowe" +msgstr "" #: templates/js/translated/stock.js:1178 msgid "Select at least one available stock item" @@ -12773,7 +13044,7 @@ msgstr "" #: templates/js/translated/stock.js:1367 msgid "NO RESULT" -msgstr "BRAK WYNIKÓW" +msgstr "" #: templates/js/translated/stock.js:1429 msgid "Pass test" @@ -12781,7 +13052,7 @@ msgstr "" #: templates/js/translated/stock.js:1432 msgid "Add test result" -msgstr "Dodaj wynik testu" +msgstr "" #: templates/js/translated/stock.js:1456 msgid "No test results found" @@ -12801,7 +13072,7 @@ msgstr "" #: templates/js/translated/stock.js:1736 msgid "In production" -msgstr "W produkcji" +msgstr "" #: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" @@ -12821,11 +13092,11 @@ msgstr "" #: templates/js/translated/stock.js:1819 msgid "Merge stock" -msgstr "Scal stany magazynowe" +msgstr "" #: templates/js/translated/stock.js:1868 msgid "Delete stock" -msgstr "Usuń stan magazynowy" +msgstr "" #: templates/js/translated/stock.js:1923 msgid "stock items" @@ -12922,7 +13193,7 @@ msgstr "" #: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "Szczegóły" +msgstr "" #: templates/js/translated/stock.js:2821 msgid "No changes" @@ -12934,7 +13205,7 @@ msgstr "" #: templates/js/translated/stock.js:2855 msgid "Location no longer exists" -msgstr "Lokalizacja już nie istnieje" +msgstr "" #: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" @@ -12942,7 +13213,7 @@ msgstr "" #: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" -msgstr "Zamówienie zakupu już nie istnieje" +msgstr "" #: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" @@ -12954,19 +13225,19 @@ msgstr "" #: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" -msgstr "Klient już nie istnieje" +msgstr "" #: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" -msgstr "Element magazynowy już nie istnieje" +msgstr "" #: templates/js/translated/stock.js:2976 msgid "Added" -msgstr "Dodano" +msgstr "" #: templates/js/translated/stock.js:2984 msgid "Removed" -msgstr "Usunięto" +msgstr "" #: templates/js/translated/stock.js:3056 msgid "No installed items" @@ -13029,7 +13300,7 @@ msgstr "" #: templates/js/translated/table_filters.js:613 #: templates/js/translated/table_filters.js:654 msgid "Order status" -msgstr "Status zamówienia" +msgstr "" #: templates/js/translated/table_filters.js:94 #: templates/js/translated/table_filters.js:618 @@ -13043,7 +13314,7 @@ msgstr "" #: templates/js/translated/table_filters.js:626 #: templates/js/translated/table_filters.js:667 msgid "Assigned to me" -msgstr "Przypisane do mnie" +msgstr "" #: templates/js/translated/table_filters.js:158 msgid "Trackable Part" @@ -13069,7 +13340,7 @@ msgstr "" #: templates/js/translated/table_filters.js:234 #: templates/js/translated/table_filters.js:345 msgid "Include sublocations" -msgstr "Uwzględnij podlokalizacje" +msgstr "" #: templates/js/translated/table_filters.js:235 msgid "Include locations" @@ -13088,7 +13359,7 @@ msgstr "" #: templates/js/translated/table_filters.js:287 #: templates/js/translated/table_filters.js:755 msgid "Subscribed" -msgstr "Obesrwowane" +msgstr "" #: templates/js/translated/table_filters.js:298 #: templates/js/translated/table_filters.js:380 @@ -13120,17 +13391,17 @@ msgstr "" #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "Numer seryjny" +msgstr "" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 msgid "Batch code" -msgstr "Kod partii" +msgstr "" #: templates/js/translated/table_filters.js:325 #: templates/js/translated/table_filters.js:696 msgid "Active parts" -msgstr "Aktywne części" +msgstr "" #: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" @@ -13138,15 +13409,15 @@ msgstr "" #: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" -msgstr "Część jest zespołem" +msgstr "" #: templates/js/translated/table_filters.js:335 msgid "Is allocated" -msgstr "Jest przydzielony" +msgstr "" #: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" -msgstr "Przedmiot został przydzielony" +msgstr "" #: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" @@ -13164,17 +13435,13 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "W produkcji" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" #: templates/js/translated/table_filters.js:365 msgid "Include Variants" -msgstr "Obejmuje warianty" +msgstr "" #: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" @@ -13203,7 +13470,7 @@ msgstr "" #: templates/js/translated/table_filters.js:414 msgid "Has purchase price" -msgstr "Posiada cenę zakupu" +msgstr "" #: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" @@ -13227,7 +13494,7 @@ msgstr "" #: templates/js/translated/table_filters.js:456 msgid "Test Passed" -msgstr "Test pomyślny" +msgstr "" #: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" @@ -13243,7 +13510,7 @@ msgstr "" #: templates/js/translated/table_filters.js:713 msgid "Show active parts" -msgstr "Pokaż aktywne części" +msgstr "" #: templates/js/translated/table_filters.js:721 msgid "Available stock" @@ -13260,11 +13527,11 @@ msgstr "" #: templates/js/translated/table_filters.js:734 msgid "Has IPN" -msgstr "Posiada IPN" +msgstr "" #: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" -msgstr "Część posiada wewnętrzny numer części" +msgstr "" #: templates/js/translated/table_filters.js:739 msgid "In stock" @@ -13272,7 +13539,7 @@ msgstr "" #: templates/js/translated/table_filters.js:747 msgid "Purchasable" -msgstr "Możliwość zakupu" +msgstr "" #: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" @@ -13284,11 +13551,11 @@ msgstr "" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "Pokaż widok kalendarza" +msgstr "" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "Pokaż widok listy" +msgstr "" #: templates/js/translated/tables.js:112 msgid "Display tree view" @@ -13304,59 +13571,59 @@ msgstr "" #: templates/js/translated/tables.js:186 msgid "Export Table Data" -msgstr "Eksportuj dane tabeli" +msgstr "" #: templates/js/translated/tables.js:190 msgid "Select File Format" -msgstr "Wybierz format pliku" +msgstr "" #: templates/js/translated/tables.js:529 msgid "Loading data" -msgstr "Wczytywanie danych" +msgstr "" #: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "wierszy na stronę" +msgstr "" #: templates/js/translated/tables.js:537 msgid "Showing all rows" -msgstr "Pokaż wszystkie wiersze" +msgstr "" #: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "Pokazywane" +msgstr "" #: templates/js/translated/tables.js:539 msgid "to" -msgstr "do" +msgstr "" #: templates/js/translated/tables.js:539 msgid "of" -msgstr "z" +msgstr "" #: templates/js/translated/tables.js:539 msgid "rows" -msgstr "wierszy" +msgstr "" #: templates/js/translated/tables.js:546 msgid "No matching results" -msgstr "Brak pasujących wyników" +msgstr "" #: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" -msgstr "Ukryj/Pokaż stronicowanie" +msgstr "" #: templates/js/translated/tables.js:555 msgid "Toggle" -msgstr "Przełącz" +msgstr "" #: templates/js/translated/tables.js:558 msgid "Columns" -msgstr "Kolumny" +msgstr "" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "Wszystkie" +msgstr "" #: templates/navbar.html:45 msgid "Buy" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "Tak" msgid "No" msgstr "Nie" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "Użytkownicy" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "Informacje osobiste" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "Uprawnienia" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "Ważne daty" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "Uprawnienia nadane" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "Grupa" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "Widok" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "Uprawnienie do wyświetlania przedmiotów" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "Uprawnienie do dodawania przedmiotów" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "Zmień" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Uprawnienie do edycji przedmiotów" -#: users/models.py:401 +#: users/models.py:413 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 919d478c3c..392c30c01c 100644 --- a/InvenTree/locale/pt/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt/LC_MESSAGES/django.po @@ -2,32 +2,32 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" -"Language-Team: Portuguese\n" -"Language: pt_PT\n" +"Language-Team: Portuguese, Brazilian\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: inventree\n" "X-Crowdin-Project-ID: 452300\n" -"X-Crowdin-Language: pt-PT\n" +"X-Crowdin-Language: pt-BR\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" -msgstr "Endpoint da API não encontrado" +msgstr "API endpoint não encontrado" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" -msgstr "O Utilizador não tem permissão para visualizar este modelo" +msgstr "Usuário não tem permissão para ver este modelo" #: InvenTree/conversion.py:95 msgid "No value provided" -msgstr "Valor não fornecido" +msgstr "Nenhum valor fornecido" #: InvenTree/conversion.py:128 #, python-brace-format @@ -36,33 +36,33 @@ msgstr "Não foi possível converter {original} para {unit}" #: InvenTree/conversion.py:130 msgid "Invalid quantity supplied" -msgstr "Quantidade inválida fornecida" +msgstr "Quantidade fornecida inválida" #: InvenTree/conversion.py:144 #, python-brace-format msgid "Invalid quantity supplied ({exc})" -msgstr "Quantidade inválida fornecida ({exc})" +msgstr "Quantidade fornecida inválida ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" -msgstr "Os detalhes do erro podem ser consultados no painel de administração" +msgstr "Detalhes do erro podem ser encontrados no painel de administrador" #: InvenTree/fields.py:140 msgid "Enter date" -msgstr "Inserir data" +msgstr "Insira uma Data" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -72,12 +72,12 @@ msgstr "Inserir data" #: templates/js/translated/sales_order.js:1982 #: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" -msgstr "Notas" +msgstr "Anotações" #: InvenTree/format.py:164 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" -msgstr "O valor '{name}' não aparece no formato padrão" +msgstr "Valor '{name}' não está no formato correto" #: InvenTree/format.py:175 msgid "Provided value does not match required pattern: " @@ -85,27 +85,27 @@ msgstr "O valor fornecido não corresponde ao padrão exigido: " #: InvenTree/forms.py:128 msgid "Enter password" -msgstr "Introduzir palavra-passe" +msgstr "Digite a senha" #: InvenTree/forms.py:129 msgid "Enter new password" -msgstr "Introduza a nova palavra-passe" +msgstr "Insira uma nova senha" #: InvenTree/forms.py:138 msgid "Confirm password" -msgstr "Confirmar palavra-passe" +msgstr "Confirmar senha" #: InvenTree/forms.py:139 msgid "Confirm new password" -msgstr "Confirmar nova palavra-passe" +msgstr "Confirmar nova senha" #: InvenTree/forms.py:143 msgid "Old password" -msgstr "Palavra-passe anterior" +msgstr "Senha atual" #: InvenTree/forms.py:182 msgid "Email (again)" -msgstr "Email (novamente)" +msgstr "E-mail (novamente)" #: InvenTree/forms.py:186 msgid "Email address confirmation" @@ -113,164 +113,296 @@ msgstr "Confirmação do endereço de email" #: InvenTree/forms.py:209 msgid "You must type the same email each time." -msgstr "Deve ser introduzido o mesmo endereço de email." +msgstr "Você deve digitar o mesmo e-mail todas as vezes." #: InvenTree/forms.py:253 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." -msgstr "O endereço de e-mail primário não é válido." +msgstr "O endereço primário de e-mail não é válido." #: InvenTree/forms.py:268 msgid "The provided email domain is not approved." -msgstr "O domínio de e-mail fornecido não foi aprovado." +msgstr "O domínio de e-mail providenciado não foi aprovado." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." -msgstr "Registo desativado." +msgstr "Cadastro está desativado." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" -msgstr "A quantidade fornecida é inválida" +msgstr "Quantidade fornecida inválida" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" -msgstr "Número de série vazio" +msgstr "Número serial em branco" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Número de série duplicado" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" -msgstr "" +msgstr "Intervalo de grupo inválido: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" -msgstr "" +msgstr "Intervalo do grupo {group} excede a quantidade permitida ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" -msgstr "" +msgstr "Sequência de grupo inválida:{group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" -msgstr "Não foram encontrados números de série" +msgstr "Nenhum número de série foi encontrado" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" -msgstr "" +msgstr "Números de série únicos ({len(serials)}) deve corresponder a quantidade ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" -msgstr "Remover tags HTML deste valor" +msgstr "Remova as \"tags\" HTML deste valor" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" -msgstr "Erro de ligação" +msgstr "Erro de conexão" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" -msgstr "O servidor respondeu com código de status inválido" +msgstr "O servidor respondeu com código estado inválido" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Ocorreu uma exceção" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" -msgstr "O servidor respondeu com Content-Length inválido" - -#: InvenTree/helpers_model.py:159 -msgid "Image size is too large" -msgstr "O tamanho da imagem é demasiado grande" +msgstr "O servidor respondeu com valor inválido do tamanho de conteúdo" #: InvenTree/helpers_model.py:171 +msgid "Image size is too large" +msgstr "Tamanho da imagem muito grande" + +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" -msgstr "A descarga da imagem excedeu o tamanho máximo" +msgstr "O download da imagem excedeu o tamanho máximo" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" -msgstr "O servidor remoto retornou uma resposta vazia" +msgstr "O servidor remoto retornou resposta vazia" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" -msgstr "O URL fornecido não é um ficheiro de imagem válido" +msgstr "A URL fornecida não é um arquivo de imagem válido" -#: InvenTree/magic_login.py:27 +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Búlgaro" + +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Tcheco" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Dinamarquês" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Alemão" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Grego" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Inglês" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Espanhol" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Espanhol (Mexicano)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Persa" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Finlandês" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Francês" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Hebraico" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hindu" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Húngaro" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Italiano" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japonês" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Coreano" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Holandês" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norueguês" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Polonês" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Português" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Português (Brasileiro)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Russo" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "Eslovaco" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Esloveno" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Sérvio" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Sueco" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Tailandês" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Turco" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnamita" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Chinês (Simplificado)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Chinês (Tradicional)" + +#: InvenTree/magic_login.py:28 #, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Inicie sessão na aplicação" +msgid "[{site_name}] Log in to the app" +msgstr "[{site_name}] Entre no aplicativo" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "Email" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" -msgstr "Metadados devem ser um objeto de dict python" +msgstr "Metadados deve ser um objeto dict python" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" -msgstr "Metadados do Plugin" +msgstr "Metadados da Extensão" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" -msgstr "Campo de metadados JSON para uso por plugins externos" +msgstr "Campo de metadados JSON, para uso por extensões externas" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Padrão formatado incorretamente" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" -msgstr "Chave de formato desconhecido" +msgstr "Chave de formato desconhecida especificada" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" -msgstr "Chave de formato exigida em falta" +msgstr "Chave de formato obrigatória ausente" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" -msgstr "Campo de referência não pode estar em branco" +msgstr "O campo de referência não pode ficar vazio" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "A referência deve corresponder ao padrão exigido" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" -msgstr "O número de referência é demasiado grande" +msgstr "O número de referência é muito grande" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" -msgstr "Ficheiro em falta" +msgstr "Arquivo ausente" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" -msgstr "Link externo em falta" +msgstr "Link externo não encontrado" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Anexo" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" -msgstr "Selecionar ficheiro a anexar" +msgstr "Selecione arquivo para anexar" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Selecionar ficheiro a anexar" msgid "Link" msgstr "Link" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" -msgstr "Link para URL externo" +msgstr "Link para URL externa" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" -msgstr "Comentário" +msgstr "Comentario" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" -msgstr "Comentário do ficheiro" +msgstr "Comentario sobre arquivo" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" -msgstr "Utilizador" +msgstr "Usuario" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "data de upload" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" -msgstr "O nome do ficheiro não pode estar em branco" +msgstr "Nome do arquivo nao pode estar vazio" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" -msgstr "Pasta de anexos inválida" +msgstr "Diretorio para anexo invalido" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" -msgstr "O nome do arquivo contém caratere inválido '{c}'" +msgstr "Arquivo contem characteres ilegais '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" -msgstr "Extensão em falta no nome do ficheiro" +msgstr "Arquivo sem extensao" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" -msgstr "Já existe um anexo com este nome" +msgstr "Anexo ja existe" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" -msgstr "Erro a renomear ficheiro" +msgstr "Erro renomeando o arquivo" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" -msgstr "Nomes duplicados não podem existir sob o mesmo pai" +msgstr "Nomes duplicados não podem existir sob o mesmo parental" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Escolha inválida" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Escolha inválida" msgid "Name" msgstr "Nome" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,282 +531,159 @@ msgstr "Nome" msgid "Description" msgstr "Descrição" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Descrição (opcional)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" -msgstr "superior" +msgstr "parent" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Caminho" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Notas Markdown (opcional)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" -msgstr "Dados do código de barras" +msgstr "Dados de código de barras" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" -msgstr "Dados do código de barras de terceiros" +msgstr "Dados de código de barras de terceiros" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Hash de código de barras" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" -msgstr "Hash único de dados do código de barras" +msgstr "Hash exclusivo de dados de código de barras" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" -msgstr "Código de barras encontrado" +msgstr "Código de barras existente encontrado" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" -msgstr "Erro do servidor" +msgstr "Erro de servidor" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." -msgstr "Um erro foi registrado pelo servidor." +msgstr "Log de erro salvo pelo servidor." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" -msgstr "Deve ser um número válido" +msgstr "Preicsa ser um numero valido" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Moeda" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" -msgstr "Selecione a moeda entre as opções disponíveis" +msgstr "Selecione a Moeda nas opções disponíveis" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." -msgstr "" +msgstr "Não tem permissões para alterar este papel do usuário." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" +msgstr "Apenas superusuários podem criar novos usuários" + +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." -msgstr "" +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "Bem-vindo(a) ao InvenTree" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:536 msgid "Filename" -msgstr "Nome do ficheiro" +msgstr "Nome do arquivo" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Valor inválido" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" -msgstr "Ficheiros de Dados" +msgstr "Arquivo de dados" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" -msgstr "Selecionar ficheiro a enviar" +msgstr "Selecione um arquivo de dados para enviar" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" -msgstr "Tipo de ficheiro não suportado" +msgstr "Tipo de arquivo não suportado" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" -msgstr "O ficheiro é demasiado grande" +msgstr "O arquivo é muito grande" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" -msgstr "Nenhuma coluna encontrada no ficheiro" +msgstr "Nenhuma coluna encontrada no arquivo" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" -msgstr "Nenhuma linha de dados encontrada no ficheiro" +msgstr "Nenhuma linha de dados encontrada no arquivo" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Nenhuma linha de dados fornecida" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Nenhuma coluna de dados fornecida" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" -msgstr "Coluna obrigatória em falta: '{name}'" +msgstr "Falta a coluna obrigatória: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" -msgstr "Coluna duplicada: '{col}'" +msgstr "Coluna duplicada: \"{col}\"" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" -msgstr "" - -#: InvenTree/serializers.py:838 -msgid "URL of remote image file" -msgstr "URL do ficheiro de imagem remota" +msgstr "Imagens Remota" #: InvenTree/serializers.py:854 +msgid "URL of remote image file" +msgstr "URL do arquivo de imagem remoto" + +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" -msgstr "Descarga de imagens de URL remoto desativada" +msgstr "Baixar imagens de URL remota não está habilitado" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Checo" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Dinamarquês" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Alemão" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Grego" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Inglês" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Espanhol" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Espanhol (Mexicano)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Persa" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Finlandês" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Francês" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Hebraico" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Hindú" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Húngaro" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Italiano" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japonês" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Coreano" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Holandês" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norueguês" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Polaco" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Português (Portugal)" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Português (Brasil)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Russo" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Esloveno" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Sueco" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Tailandês" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Turco" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnamita" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Chinês (simplificado)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Chinês (Tradicional)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" -msgstr "Processo em segundo plano falhou" +msgstr "Falha em verificar o histórico do trabalhador" #: InvenTree/status.py:70 msgid "Email backend not configured" -msgstr "Backend de e-mail não configurado" +msgstr "Serviço de fundo do e-mail não foi configurado" #: InvenTree/status.py:73 msgid "InvenTree system health checks failed" -msgstr "Verificações de saúde do sistema InvenTree falharam" +msgstr "Verificação de saúde do sistema InvenTree falhou" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:37 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:164 @@ -684,14 +694,14 @@ msgstr "Pendente" #: InvenTree/status_codes.py:13 generic/states/tests.py:18 msgid "Placed" -msgstr "Submetido" +msgstr "Colocado" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:169 generic/states/tests.py:19 #: order/templates/order/order_base.html:158 #: order/templates/order/sales_order_base.html:161 msgid "Complete" -msgstr "Completo" +msgstr "Completado" #: InvenTree/status_codes.py:15 InvenTree/status_codes.py:44 #: InvenTree/status_codes.py:150 InvenTree/status_codes.py:170 @@ -706,13 +716,13 @@ msgstr "Perdido" #: InvenTree/status_codes.py:17 InvenTree/status_codes.py:46 #: InvenTree/status_codes.py:73 msgid "Returned" -msgstr "Devolvido" +msgstr "Retornado" #: InvenTree/status_codes.py:40 InvenTree/status_codes.py:167 msgid "In Progress" -msgstr "Em execução" +msgstr "Em Progresso" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -725,7 +735,7 @@ msgstr "OK" #: InvenTree/status_codes.py:63 msgid "Attention needed" -msgstr "Atenção necessária" +msgstr "Necessita de atenção" #: InvenTree/status_codes.py:64 msgid "Damaged" @@ -745,15 +755,15 @@ msgstr "Em quarentena" #: InvenTree/status_codes.py:91 msgid "Legacy stock tracking entry" -msgstr "Entrada de seguimento de stock antiga" +msgstr "Entrada de rastreamento de estoque antiga" #: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" -msgstr "Elemento de stock criado" +msgstr "Item de estoque criado" #: InvenTree/status_codes.py:96 msgid "Edited stock item" -msgstr "Elemento de stock editado" +msgstr "Item de estoque editado" #: InvenTree/status_codes.py:97 msgid "Assigned serial number" @@ -761,23 +771,23 @@ msgstr "Número de série atribuído" #: InvenTree/status_codes.py:100 msgid "Stock counted" -msgstr "Stock contado" +msgstr "Estoque contado" #: InvenTree/status_codes.py:101 msgid "Stock manually added" -msgstr "Stock adicionado manualmente" +msgstr "Estoque adicionado manualmente" #: InvenTree/status_codes.py:102 msgid "Stock manually removed" -msgstr "Stock removido manualmente" +msgstr "Estoque removido manualmente" #: InvenTree/status_codes.py:105 msgid "Location changed" -msgstr "Localização alterada" +msgstr "Local alterado" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "Inventário atualizado" +msgstr "Estoque atualizado" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" @@ -789,35 +799,35 @@ msgstr "Removido da montagem" #: InvenTree/status_codes.py:112 msgid "Installed component item" -msgstr "Instalado elemento do componente" +msgstr "Instalado componente do Item" #: InvenTree/status_codes.py:113 msgid "Removed component item" -msgstr "Elemento do componente removido" +msgstr "Removido componente do Item" #: InvenTree/status_codes.py:116 msgid "Split from parent item" -msgstr "Separar do elemento ascendente" +msgstr "Separado do Item Paternal" #: InvenTree/status_codes.py:117 msgid "Split child item" -msgstr "Separar elemento descendente" +msgstr "Separar o Item filho" #: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" -msgstr "Itens de stock fundidos" +msgstr "Itens de estoque mesclados" #: InvenTree/status_codes.py:123 msgid "Converted to variant" -msgstr "Transformado em variante" +msgstr "Convertido para variável" #: InvenTree/status_codes.py:126 msgid "Build order output created" -msgstr "Resultado do pedido de Montagem criado" +msgstr "Criação dos pedidos de produção criado" #: InvenTree/status_codes.py:127 msgid "Build order output completed" -msgstr "Resultado do pedido de Montagem completo" +msgstr "Criação do pedido de produção completado" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" @@ -825,19 +835,19 @@ msgstr "Saída do pedido de produção rejeitada" #: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" -msgstr "Utilizado no pedido de montagem" +msgstr "Usado no pedido de produção" #: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" -msgstr "Enviado contra o Pedido de Vendas" +msgstr "Enviado contra o Pedido de Venda" #: InvenTree/status_codes.py:135 msgid "Received against Purchase Order" -msgstr "Recebido contra o Pedido de Compra" +msgstr "Recebido referente ao Pedido de Compra" #: InvenTree/status_codes.py:138 msgid "Returned against Return Order" -msgstr "Devolvido contra a Ordem de Devolução" +msgstr "Devolvido contra Pedido de Retorno" #: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" @@ -845,7 +855,7 @@ msgstr "Enviado ao cliente" #: InvenTree/status_codes.py:142 msgid "Returned from customer" -msgstr "Devolvido do cliente" +msgstr "Devolvido pelo cliente" #: InvenTree/status_codes.py:149 msgid "Production" @@ -853,11 +863,11 @@ msgstr "Produção" #: InvenTree/status_codes.py:185 msgid "Return" -msgstr "Retornar" +msgstr "Devolução" #: InvenTree/status_codes.py:188 msgid "Repair" -msgstr "Reparação" +msgstr "Consertar" #: InvenTree/status_codes.py:191 msgid "Replace" @@ -865,19 +875,15 @@ msgstr "Substituir" #: InvenTree/status_codes.py:194 msgid "Refund" -msgstr "Reembolso" +msgstr "Reembolsar" #: InvenTree/status_codes.py:197 msgid "Reject" -msgstr "Rejeitar" +msgstr "Recusar" #: InvenTree/templatetags/inventree_extras.py:177 msgid "Unknown database" -msgstr "" - -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" +msgstr "Banco de dados desconhecido" #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" @@ -893,31 +899,31 @@ msgstr "Valor excedente não deve ser negativo" #: InvenTree/validators.py:139 msgid "Overage must not exceed 100%" -msgstr "Excedente não deve ultrapassar 100%" +msgstr "Excedente não deve exceder 100%" #: InvenTree/validators.py:145 msgid "Invalid value for overage" -msgstr "Valor inválido para excedente" +msgstr "Valor de excedente inválido" #: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" -msgstr "Editar informações do utilizador" +msgstr "Editar informações do usuário" #: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20 msgid "Set Password" -msgstr "Definir Palavra-Passe" +msgstr "Definir senha" #: InvenTree/views.py:434 msgid "Password fields must match" -msgstr "Campos de palavra-passe não coincidem" +msgstr "Os campos de senha devem coincidir" #: InvenTree/views.py:442 msgid "Wrong password provided" -msgstr "Palavra-passe incorreta fornecida" +msgstr "Senha incorreta fornecida" #: InvenTree/views.py:650 templates/navbar.html:160 msgid "System Information" -msgstr "Informações do sistema" +msgstr "Informação do Sistema" #: InvenTree/views.py:657 templates/navbar.html:171 msgid "About InvenTree" @@ -925,18 +931,18 @@ msgstr "Sobre o InvenTree" #: build/api.py:237 msgid "Build must be cancelled before it can be deleted" -msgstr "A Construção deve ser cancelada antes de poder ser excluída" +msgstr "Produção deve ser cancelada antes de ser deletada" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "Consumível" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -946,20 +952,20 @@ msgstr "Opcional" #: build/api.py:283 templates/js/translated/table_filters.js:408 #: templates/js/translated/table_filters.js:575 msgid "Tracked" -msgstr "Rastreado" +msgstr "Monitorado" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "Alocado" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "Alocado" msgid "Available" msgstr "Disponível" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" -msgstr "Pedido de Construção" +msgstr "Ondem de Produção" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -987,29 +993,29 @@ msgstr "Pedido de Construção" #: templates/InvenTree/settings/sidebar.html:55 #: templates/js/translated/search.js:186 users/models.py:194 msgid "Build Orders" -msgstr "Pedidos de Construção" +msgstr "Ordens de Produções" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" -msgstr "Escolha inválida para construção ascendente" +msgstr "Escolha de Produção parental inválida" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" -msgstr "" +msgstr "Peça da ordem de produção não pode ser alterada" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" -msgstr "Referência do Pedido de Montagem" +msgstr "Referência do pedido de produção" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "Referência do Pedido de Montagem" msgid "Reference" msgstr "Referência" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "Breve descrição da produção (opcional)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" -msgstr "Construção ascendente" +msgstr "Produção Progenitor" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" -msgstr "Pedido de Construção a que esta montagem está alocada" +msgstr "Pedido de produção para qual este serviço está alocado" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "Pedido de Construção a que esta montagem está alocada" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "Pedido de Construção a que esta montagem está alocada" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "Pedido de Construção a que esta montagem está alocada" msgid "Part" msgstr "Peça" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" -msgstr "Selecionar peça a montar" +msgstr "Selecionar peça para produção" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" -msgstr "Referência de Pedido de Venda" +msgstr "Referência do pedido de venda" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" -msgstr "Pedido de Venda ao qual esta construção está associada" +msgstr "Pedido de Venda para qual esta produção está alocada" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" -msgstr "Localização de Origem" +msgstr "Local de Origem" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" -msgstr "Escolher localização de onde deve ser retirado o stock para esta construção (deixar em branco para retirar de qualquer localização)" +msgstr "Selecione a localização para pegar do estoque para esta produção (deixe em branco para tirar a partir de qualquer local de estoque)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" -msgstr "Local de destino" +msgstr "Local de Destino" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" -msgstr "Escolher o local onde os elementos completos serão armazenados" +msgstr "Selecione o local onde os itens concluídos serão armazenados" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" -msgstr "Quantidade da Montagem" +msgstr "Quantidade de Produção" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" -msgstr "Número de unidades de stock a construir" +msgstr "Número de itens em estoque para produzir" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" -msgstr "Unidades concluídas" +msgstr "Itens concluídos" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" -msgstr "Número de itens de stock concluídos" +msgstr "Número de itens em estoque concluídos" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" -msgstr "Estado da Construção" +msgstr "Progresso da produção" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" -msgstr "Código de estado da Construção" +msgstr "Código de situação da produção" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" -msgstr "Código de lote" +msgstr "Código de Lote" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" -msgstr "Código de lote para este resultado da construção" +msgstr "Código do lote para esta saída de produção" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" -msgstr "Data de Criação" +msgstr "Criado em" + +#: build/models.py:272 +msgid "Target completion date" +msgstr "Data alvo final" #: build/models.py:273 -msgid "Target completion date" -msgstr "Data Final Alvo" - -#: build/models.py:274 msgid "Target date for build completion. Build will be overdue after this date." -msgstr "Data objetivo para conclusão da construção. A construção ficará em atraso depois desta data." +msgstr "Data alvo para finalização de produção. Estará atrasado a partir deste dia." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Data de conclusão" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" -msgstr "concluído por" +msgstr "Concluído por" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Emitido por" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" -msgstr "Utilizador que emitiu esta ordem de construção" +msgstr "Usuário que emitiu este pedido de produção" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Responsável" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" -msgstr "Utilizador ou grupo responsável por esta ordem de produção" +msgstr "Usuário ou grupo responsável para este pedido de produção" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Link Externo" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" -msgstr "Prioridade da produção" +msgstr "Prioridade de Produção" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" -msgstr "Prioridade desta ordem de produção" +msgstr "Prioridade deste pedido de produção" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "Prioridade desta ordem de produção" msgid "Project Code" msgstr "Código do projeto" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" -msgstr "Código do projeto para esta ordem de produção" +msgstr "Código do projeto para este pedido de produção" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" -msgstr "A ordem de construção {build} foi concluída" +msgstr "O Pedido de produção {build} foi concluído!" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" -msgstr "Uma ordem de construção foi concluída" +msgstr "Um pedido de produção foi concluído" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Nenhuma saída de produção especificada" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" -msgstr "" +msgstr "Saída de produção já completada" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" -msgstr "" +msgstr "Saída da produção não corresponde ao Pedido de Produção" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" -msgstr "" +msgstr "Quantidade deve ser maior que zero" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" -msgstr "" +msgstr "Quantidade não pode ser maior do que a quantidade de saída" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" -msgstr "" +msgstr "Objeto de produção" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1312,43 +1318,43 @@ msgstr "" #: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 #: templates/js/translated/stock.js:3075 msgid "Quantity" -msgstr "" +msgstr "Quantidade" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" -msgstr "" +msgstr "Quantidade necessária para o pedido de produção" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "" +msgstr "Item de produção deve especificar a saída, pois peças mestres estão marcadas como rastreáveis" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" +msgstr "Quantidade alocada ({q}) não deve exceder a quantidade disponível em estoque ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" -msgstr "" +msgstr "O item do estoque está sobre-alocado" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" -msgstr "" +msgstr "Quantidade alocada deve ser maior que zero" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" -msgstr "" +msgstr "Quantidade deve ser 1 para estoque serializado" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" -msgstr "" +msgstr "Item estoque selecionado não coincide com linha da LDM" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1358,91 +1364,91 @@ msgstr "" #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 #: templates/js/translated/stock.js:2948 msgid "Stock Item" -msgstr "" +msgstr "Item de estoque" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" -msgstr "" +msgstr "Origem do item em estoque" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" -msgstr "" +msgstr "Quantidade do estoque para alocar à produção" + +#: build/models.py:1559 +msgid "Install into" +msgstr "Instalar em" #: build/models.py:1560 -msgid "Install into" -msgstr "" - -#: build/models.py:1561 msgid "Destination stock item" -msgstr "" +msgstr "Destino do Item do Estoque" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" -msgstr "" - -#: build/serializers.py:167 -msgid "Build output does not match the parent build" -msgstr "" +msgstr "Saída da Produção" #: build/serializers.py:171 -msgid "Output part does not match BuildOrder part" -msgstr "" +msgid "Build output does not match the parent build" +msgstr "Saída de produção não coincide com a produção progenitora" #: build/serializers.py:175 +msgid "Output part does not match BuildOrder part" +msgstr "Peça de saída não coincide com a peça da ordem de produção" + +#: build/serializers.py:179 msgid "This build output has already been completed" -msgstr "" +msgstr "Esta saída de produção já foi concluída" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" -msgstr "" +msgstr "A saída de produção não está completamente alocada" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" -msgstr "" +msgstr "Entre a quantidade da saída de produção" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" -msgstr "" +msgstr "Quantidade inteira necessária para peças rastreáveis" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" -msgstr "" +msgstr "Quantidade inteira necessária, pois a lista de materiais contém peças rastreáveis" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" -msgstr "" +msgstr "Números de Série" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" -msgstr "" +msgstr "Digite os números de série para saídas de produção" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" -msgstr "" +msgstr "Alocar Números de Série Automaticamente" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" -msgstr "" +msgstr "Alocar automaticamente os itens necessários com os números de série correspondentes" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" -msgstr "" +msgstr "Os seguintes números de série já existem ou são inválidos" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" -msgstr "" +msgstr "Uma lista de saídas de produção deve ser fornecida" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1453,34 +1459,34 @@ msgstr "" #: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 #: templates/js/translated/stock.js:2842 msgid "Location" -msgstr "Localização" +msgstr "Local" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" -msgstr "" +msgstr "Local de estoque para saídas recicladas" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" -msgstr "" +msgstr "Descartar alocações" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" -msgstr "" +msgstr "Descartar quaisquer alocações de estoque para saídas sucateadas" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" -msgstr "" +msgstr "Motivo para sucatear saída(s) de produção" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" -msgstr "" +msgstr "Local para saídas de produção concluídas" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1488,177 +1494,206 @@ msgstr "" #: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 #: templates/js/translated/stock.js:3091 msgid "Status" -msgstr "" +msgstr "Situação" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" -msgstr "" +msgstr "Aceitar Alocação Incompleta" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" -msgstr "" +msgstr "Concluir saídas se o estoque não tiver sido totalmente alocado" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" -msgstr "" +msgstr "Remover Estoque Alocado" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" -msgstr "" +msgstr "Subtrair qualquer estoque que já tenha sido alocado para esta produção" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" -msgstr "" +msgstr "Remover Saídas Incompletas" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" -msgstr "" +msgstr "Excluir quaisquer saídas de produção que não tenham sido completadas" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" -msgstr "" +msgstr "Não permitido" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" -msgstr "" +msgstr "Aceitar conforme consumido por esta ordem de produção" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" -msgstr "" +msgstr "Desatribua antes de completar este pedido de produção" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" -msgstr "" +msgstr "Estoque sobrealocado" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" -msgstr "" +msgstr "Como deseja manejar itens de estoque extras atribuídos ao pedido de produção" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" -msgstr "" +msgstr "Alguns itens de estoque foram sobrealocados" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" -msgstr "" +msgstr "Aceitar não alocados" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" -msgstr "" +msgstr "Aceitar que os itens de estoque não foram totalmente alocados para esta produção" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" -msgstr "" +msgstr "Estoque obrigatório não foi totalmente alocado" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" -msgstr "" +msgstr "Aceitar Incompleto" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" -msgstr "" +msgstr "Aceitar que o número requerido de saídas de produção não foi concluído" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" -msgstr "" +msgstr "Quantidade de produção requerida não foi concluída" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" -msgstr "" +msgstr "Pedido de produção tem saídas incompletas" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" -msgstr "" +msgstr "Linha de produção" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" -msgstr "" +msgstr "Saída da Produção" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" -msgstr "" +msgstr "Saída de produção deve indicar a mesma produção" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" -msgstr "" +msgstr "Item da linha de produção" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" -msgstr "" +msgstr "bin_item.part deve indicar a mesma peça do pedido de produção" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" -msgstr "" +msgstr "Item deve estar em estoque" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" -msgstr "" +msgstr "Quantidade disponível ({q}) excedida" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" -msgstr "" +msgstr "Saída de produção deve ser definida para alocação de peças rastreadas" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" -msgstr "" +msgstr "Saída de produção deve ser definida para alocação de peças não rastreadas" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" -msgstr "" +msgstr "Alocação do Item precisa ser fornecida" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" -msgstr "" +msgstr "Local de estoque onde peças serão extraídas (deixar em branco para qualquer local)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" -msgstr "" +msgstr "Local não incluso" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" -msgstr "" +msgstr "Não incluir itens de estoque deste local" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" -msgstr "" +msgstr "Estoque permutável" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" -msgstr "" +msgstr "Itens de estoque em múltiplos locais pode ser permutável" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" -msgstr "" +msgstr "Substituir Estoque" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" -msgstr "" +msgstr "Permitir alocação de peças substitutas" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" -msgstr "" +msgstr "Itens opcionais" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" -msgstr "" +msgstr "Alocar itens LDM opcionais para o pedido de produção" + +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "Item LDM" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "Estoque Alocado" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "No pedido" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "Em Produção" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "Estoque Disponível" #: build/tasks.py:149 msgid "Stock required for build order" -msgstr "" +msgstr "Estoque obrigatório para o pedido de produção" #: build/tasks.py:166 msgid "Overdue Build Order" -msgstr "" +msgstr "Pedido de produção vencido" #: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" -msgstr "" +msgstr "Pedido de produção {bo} está atrasada" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" -msgstr "" +msgstr "Miniatura da parte" #: build/templates/build/build_base.html:38 #: company/templates/company/supplier_part.html:35 @@ -1670,7 +1705,7 @@ msgstr "" #: stock/templates/stock/location.html:55 #: templates/js/translated/filters.js:335 msgid "Barcode actions" -msgstr "" +msgstr "Ações de código de barras" #: build/templates/build/build_base.html:42 #: company/templates/company/supplier_part.html:39 @@ -1681,7 +1716,7 @@ msgstr "" #: stock/templates/stock/item_base.html:44 #: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" -msgstr "" +msgstr "Mostrar QR Code" #: build/templates/build/build_base.html:45 #: company/templates/company/supplier_part.html:41 @@ -1694,7 +1729,7 @@ msgstr "" #: templates/js/translated/barcode.js:496 #: templates/js/translated/barcode.js:501 msgid "Unlink Barcode" -msgstr "" +msgstr "Desatribuir Código de Barras" #: build/templates/build/build_base.html:47 #: company/templates/company/supplier_part.html:43 @@ -1705,75 +1740,75 @@ msgstr "" #: stock/templates/stock/item_base.html:49 #: stock/templates/stock/location.html:61 msgid "Link Barcode" -msgstr "" +msgstr "Atribuir Código de Barras" #: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 #: order/templates/order/return_order_base.html:55 #: order/templates/order/sales_order_base.html:55 msgid "Print actions" -msgstr "" +msgstr "Ações de impressão" #: build/templates/build/build_base.html:60 msgid "Print build order report" -msgstr "" +msgstr "Imprimir relatório do pedido de produção" #: build/templates/build/build_base.html:67 msgid "Build actions" -msgstr "" +msgstr "Ações de produção" #: build/templates/build/build_base.html:71 msgid "Edit Build" -msgstr "" +msgstr "Editar produção" #: build/templates/build/build_base.html:73 msgid "Cancel Build" -msgstr "" +msgstr "Cancelar produção" #: build/templates/build/build_base.html:76 msgid "Duplicate Build" -msgstr "" +msgstr "Duplicar produção" #: build/templates/build/build_base.html:79 msgid "Delete Build" -msgstr "" +msgstr "Excluir produção" #: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 msgid "Complete Build" -msgstr "" +msgstr "Concluir produção" #: build/templates/build/build_base.html:107 msgid "Build Description" -msgstr "" +msgstr "Descrição da produção" #: build/templates/build/build_base.html:117 msgid "No build outputs have been created for this build order" -msgstr "" +msgstr "Nenhuma saída de produção foi criada para este pedido de produção" #: build/templates/build/build_base.html:124 msgid "Build Order is ready to mark as completed" -msgstr "" +msgstr "Pedido de produção está pronta para ser marcada como concluída" #: build/templates/build/build_base.html:129 msgid "Build Order cannot be completed as outstanding outputs remain" -msgstr "" +msgstr "Pedido de produção não pode ser concluída, os resultados pendentes permanecem" #: build/templates/build/build_base.html:134 msgid "Required build quantity has not yet been completed" -msgstr "" +msgstr "A quantidade de produção necessária ainda não foi concluída" #: build/templates/build/build_base.html:139 msgid "Stock has not been fully allocated to this Build Order" -msgstr "" +msgstr "Estoque não foi totalmente alocado para este Pedido de Produção" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1781,12 +1816,12 @@ msgstr "" #: templates/js/translated/sales_order.js:835 #: templates/js/translated/sales_order.js:1867 msgid "Target Date" -msgstr "" +msgstr "Data alvo" #: build/templates/build/build_base.html:165 #, python-format msgid "This build was due on %(target)s" -msgstr "" +msgstr "Essa produção expirou em %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 @@ -1798,16 +1833,16 @@ msgstr "" #: templates/js/translated/table_filters.js:622 #: templates/js/translated/table_filters.js:663 msgid "Overdue" -msgstr "" +msgstr "Expirou" #: build/templates/build/build_base.html:177 #: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 msgid "Completed Outputs" -msgstr "" +msgstr "Saídas Concluídas" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1819,60 +1854,60 @@ msgstr "" #: templates/js/translated/sales_order.js:992 #: templates/js/translated/stock.js:2895 msgid "Sales Order" -msgstr "" +msgstr "Pedido de Venda" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 #: templates/js/translated/table_filters.js:24 msgid "Issued By" -msgstr "" +msgstr "Emitido por" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" -msgstr "" +msgstr "Prioridade" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "" +msgstr "Excluir Pedido de Produção" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "" +msgstr "QR Code do Pedido de Produção" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "" +msgstr "Vincular código de barras ao Pedido de Produção" #: build/templates/build/detail.html:15 msgid "Build Details" -msgstr "" +msgstr "Detalhes da produção" #: build/templates/build/detail.html:38 msgid "Stock Source" -msgstr "" +msgstr "Origem do estoque" #: build/templates/build/detail.html:43 msgid "Stock can be taken from any available location." -msgstr "" +msgstr "O estoque pode ser tirado de qualquer local disponível." -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" -msgstr "" +msgstr "Destino" #: build/templates/build/detail.html:56 msgid "Destination location not specified" -msgstr "" +msgstr "Loca de destino não especificado" #: build/templates/build/detail.html:73 msgid "Allocated Parts" -msgstr "" +msgstr "Peças alocadas" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1880,90 +1915,90 @@ msgstr "" #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" -msgstr "" +msgstr "Lote" #: build/templates/build/detail.html:133 #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" -msgstr "" +msgstr "Criado" #: build/templates/build/detail.html:144 msgid "No target date set" -msgstr "" +msgstr "Sem data alvo definida" #: build/templates/build/detail.html:149 #: order/templates/order/sales_order_base.html:202 #: templates/js/translated/table_filters.js:685 msgid "Completed" -msgstr "" +msgstr "Concluído" #: build/templates/build/detail.html:153 msgid "Build not complete" -msgstr "" +msgstr "Produção não concluída" #: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" -msgstr "" +msgstr "Pedido de Produção Filho" #: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" -msgstr "" +msgstr "Alocar Estoque para Produção" #: build/templates/build/detail.html:181 msgid "Deallocate stock" -msgstr "" +msgstr "Desalocar estoque" #: build/templates/build/detail.html:182 msgid "Deallocate Stock" -msgstr "" +msgstr "Desalocar estoque" #: build/templates/build/detail.html:184 msgid "Automatically allocate stock to build" -msgstr "" +msgstr "Alocar o estoque para produção automaticamente" #: build/templates/build/detail.html:185 msgid "Auto Allocate" -msgstr "" +msgstr "Alocar automaticamente" #: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" -msgstr "" +msgstr "Alocar estoque para a produção manualmente" #: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" -msgstr "" +msgstr "Alocar estoque" #: build/templates/build/detail.html:191 msgid "Order required parts" -msgstr "" +msgstr "Pedir peças necessárias" #: build/templates/build/detail.html:192 #: templates/js/translated/purchase_order.js:803 msgid "Order Parts" -msgstr "" +msgstr "Pedir Peças" #: build/templates/build/detail.html:210 msgid "Incomplete Build Outputs" -msgstr "" +msgstr "Saída de Produção Incompletas" #: build/templates/build/detail.html:214 msgid "Create new build output" -msgstr "" +msgstr "Criar nova saída de produção" #: build/templates/build/detail.html:215 msgid "New Build Output" -msgstr "" +msgstr "Nova saída de produção" #: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" -msgstr "" +msgstr "Consumir estoque" #: build/templates/build/detail.html:244 msgid "Completed Build Outputs" -msgstr "" +msgstr "Saídas de Produção concluídas" #: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 #: company/templates/company/detail.html:229 @@ -1979,1576 +2014,1597 @@ msgstr "" #: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" -msgstr "" +msgstr "Anexos" #: build/templates/build/detail.html:271 msgid "Build Notes" -msgstr "" +msgstr "Notas de produção" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" -msgstr "" +msgstr "Alocação Completa" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" -msgstr "" +msgstr "Todas as linhas foram totalmente alocadas" #: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" -msgstr "" +msgstr "Novo Pedido de Produção" #: build/templates/build/sidebar.html:5 msgid "Build Order Details" -msgstr "" +msgstr "Detalhes do Pedido de Produção" #: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" -msgstr "" +msgstr "Saídas Incompletas" #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" -msgstr "" +msgstr "Formato de arquivo não suportado: {fmt}" #: common/files.py:65 msgid "Error reading file (invalid encoding)" -msgstr "" +msgstr "Erro ao ler arquivo (codificação inválida)" #: common/files.py:70 msgid "Error reading file (invalid format)" -msgstr "" +msgstr "Erro ao ler arquivo (formato inválido)" #: common/files.py:72 msgid "Error reading file (incorrect dimension)" -msgstr "" +msgstr "Erro ao ler o arquivo (dimensão incorreta)" #: common/files.py:74 msgid "Error reading file (data could be corrupted)" -msgstr "" +msgstr "Erro ao ler o arquivo (dados podem estar corrompidos)" #: common/forms.py:12 msgid "File" -msgstr "" +msgstr "Arquivo" #: common/forms.py:12 msgid "Select file to upload" -msgstr "" +msgstr "Selecione um arquivo para carregar" #: common/forms.py:25 msgid "{name.title()} File" -msgstr "" +msgstr "Arquivo {name.title()}" #: common/forms.py:26 #, python-brace-format msgid "Select {name} file to upload" -msgstr "" +msgstr "Selecione {name} arquivo para carregar" + +#: common/models.py:71 +msgid "Updated" +msgstr "Atualizado" #: common/models.py:72 -msgid "Updated" -msgstr "" - -#: common/models.py:73 msgid "Timestamp of last update" -msgstr "" +msgstr "Tempo da última atualização" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "URL do site está bloqueada por configuração" + +#: common/models.py:130 msgid "Unique project code" -msgstr "" +msgstr "Código único do projeto" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" -msgstr "" +msgstr "Descrição do projeto" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" -msgstr "" +msgstr "Usuário ou grupo responsável por este projeto" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" -msgstr "" +msgstr "Senha de configurações (deve ser única — diferencia maiúsculas de minúsculas)" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" -msgstr "" +msgstr "Valor da Configuração" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" -msgstr "" +msgstr "Valor escolhido não é uma opção válida" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" -msgstr "" +msgstr "Valor deve ser um valor booleano" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" -msgstr "" +msgstr "Valor deve ser um número inteiro" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" -msgstr "" +msgstr "A frase senha deve ser diferenciada" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" -msgstr "" +msgstr "Nenhum grupo" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." -msgstr "" +msgstr "Um domínio vazio não é permitido." -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" -msgstr "" +msgstr "Nome de domínio inválido: {domain}" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" -msgstr "" - -#: common/models.py:1176 -msgid "Restart required" -msgstr "" - -#: common/models.py:1178 -msgid "A setting has been changed which requires a server restart" -msgstr "" - -#: common/models.py:1185 -msgid "Pending migrations" -msgstr "" - -#: common/models.py:1186 -msgid "Number of pending database migrations" -msgstr "" - -#: common/models.py:1191 -msgid "Server Instance Name" -msgstr "" - -#: common/models.py:1193 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:1197 -msgid "Use instance name" -msgstr "" - -#: common/models.py:1198 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:1203 -msgid "Restrict showing `about`" -msgstr "" - -#: common/models.py:1204 -msgid "Show the `about` modal only to superusers" -msgstr "" - -#: common/models.py:1209 company/models.py:109 company/models.py:110 -msgid "Company name" -msgstr "" - -#: common/models.py:1210 -msgid "Internal company name" -msgstr "" - -#: common/models.py:1214 -msgid "Base URL" -msgstr "" +msgstr "Sem extensão" #: common/models.py:1215 -msgid "Base URL for server instance" -msgstr "" +msgid "Restart required" +msgstr "Reinicialização necessária" -#: common/models.py:1221 -msgid "Default Currency" -msgstr "" +#: common/models.py:1217 +msgid "A setting has been changed which requires a server restart" +msgstr "Uma configuração que requer uma reinicialização do servidor foi alterada" -#: common/models.py:1222 -msgid "Select base currency for pricing calculations" -msgstr "" +#: common/models.py:1224 +msgid "Pending migrations" +msgstr "Migrações pendentes" -#: common/models.py:1228 -msgid "Currency Update Interval" -msgstr "" +#: common/models.py:1225 +msgid "Number of pending database migrations" +msgstr "Número de migrações pendentes na base de dados" #: common/models.py:1230 -msgid "How often to update exchange rates (set to zero to disable)" -msgstr "" +msgid "Server Instance Name" +msgstr "Nome da Instância do Servidor" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 -msgid "days" -msgstr "" +#: common/models.py:1232 +msgid "String descriptor for the server instance" +msgstr "Descritor de frases para a instância do servidor" + +#: common/models.py:1236 +msgid "Use instance name" +msgstr "Usar nome da instância" #: common/models.py:1237 -msgid "Currency Update Plugin" -msgstr "" +msgid "Use the instance name in the title-bar" +msgstr "Usar o nome da instância na barra de título" -#: common/models.py:1238 -msgid "Currency update plugin to use" -msgstr "" +#: common/models.py:1242 +msgid "Restrict showing `about`" +msgstr "Restringir a exibição 'sobre'" #: common/models.py:1243 -msgid "Download from URL" -msgstr "" +msgid "Show the `about` modal only to superusers" +msgstr "Mostrar 'sobre' modal apenas para superusuários" -#: common/models.py:1245 -msgid "Allow download of remote images and files from external URL" -msgstr "" +#: common/models.py:1248 company/models.py:106 company/models.py:107 +msgid "Company name" +msgstr "Nome da empresa" -#: common/models.py:1251 -msgid "Download Size Limit" -msgstr "" +#: common/models.py:1249 +msgid "Internal company name" +msgstr "Nome interno da Empresa" -#: common/models.py:1252 -msgid "Maximum allowable download size for remote image" -msgstr "" +#: common/models.py:1253 +msgid "Base URL" +msgstr "URL de Base" -#: common/models.py:1258 -msgid "User-agent used to download from URL" -msgstr "" +#: common/models.py:1254 +msgid "Base URL for server instance" +msgstr "URL Base da instância do servidor" #: common/models.py:1260 -msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" -msgstr "" +msgid "Default Currency" +msgstr "Moeda Padrão" -#: common/models.py:1265 -msgid "Strict URL Validation" -msgstr "" +#: common/models.py:1261 +msgid "Select base currency for pricing calculations" +msgstr "Selecione a moeda base para cálculos de preços" -#: common/models.py:1266 -msgid "Require schema specification when validating URLs" -msgstr "" +#: common/models.py:1267 +msgid "Currency Update Interval" +msgstr "Intervalo de Atualização da Moeda" -#: common/models.py:1271 -msgid "Require confirm" -msgstr "" +#: common/models.py:1269 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "Com que frequência atualizar as taxas de câmbio (defina como zero para desativar)" -#: common/models.py:1272 -msgid "Require explicit user confirmation for certain action." -msgstr "" +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 +msgid "days" +msgstr "dias" + +#: common/models.py:1276 +msgid "Currency Update Plugin" +msgstr "Extensão de Atualização de Moeda" #: common/models.py:1277 -msgid "Tree Depth" -msgstr "" +msgid "Currency update plugin to use" +msgstr "Extensão de Atualização de Moeda a utilizar" -#: common/models.py:1279 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" +#: common/models.py:1282 +msgid "Download from URL" +msgstr "Baixar do URL" -#: common/models.py:1285 -msgid "Update Check Interval" -msgstr "" +#: common/models.py:1284 +msgid "Allow download of remote images and files from external URL" +msgstr "Permitir baixar imagens remotas e arquivos de URLs externos" -#: common/models.py:1286 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" +#: common/models.py:1290 +msgid "Download Size Limit" +msgstr "Limite de tamanho para baixar" -#: common/models.py:1292 -msgid "Automatic Backup" -msgstr "" +#: common/models.py:1291 +msgid "Maximum allowable download size for remote image" +msgstr "Maior tamanho de imagem remota baixada permitida" -#: common/models.py:1293 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1298 -msgid "Auto Backup Interval" -msgstr "" +#: common/models.py:1297 +msgid "User-agent used to download from URL" +msgstr "Usuário-agente utilizado para baixar da URL" #: common/models.py:1299 -msgid "Specify number of days between automated backup events" -msgstr "" +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "Permitir a substituição de imagens e arquivos usados baixados por usuário-agente (deixar em branco por padrão)" + +#: common/models.py:1304 +msgid "Strict URL Validation" +msgstr "Validação rigorosa de URL" #: common/models.py:1305 -msgid "Task Deletion Interval" -msgstr "" +msgid "Require schema specification when validating URLs" +msgstr "Exigir especificação de esquema ao validar URLs" -#: common/models.py:1307 -msgid "Background task results will be deleted after specified number of days" -msgstr "" +#: common/models.py:1310 +msgid "Require confirm" +msgstr "Exigir confirmação" -#: common/models.py:1314 -msgid "Error Log Deletion Interval" -msgstr "" +#: common/models.py:1311 +msgid "Require explicit user confirmation for certain action." +msgstr "Exigir confirmação explícita do usuário para uma certa ação." #: common/models.py:1316 -msgid "Error logs will be deleted after specified number of days" -msgstr "" +msgid "Tree Depth" +msgstr "Profundidade da árvore" -#: common/models.py:1323 -msgid "Notification Deletion Interval" -msgstr "" +#: common/models.py:1318 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "Profundidade padrão de visualização da árvore. Níveis mais profundos podem ser carregados gradualmente conforme necessário." + +#: common/models.py:1324 +msgid "Update Check Interval" +msgstr "Atualizar Intervalo de Verificação" #: common/models.py:1325 -msgid "User notifications will be deleted after specified number of days" -msgstr "" +msgid "How often to check for updates (set to zero to disable)" +msgstr "Frequência para verificar atualizações (defina como zero para desativar)" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" +#: common/models.py:1331 +msgid "Automatic Backup" +msgstr "Cópia de Segurança Automática" -#: common/models.py:1333 -msgid "Enable barcode scanner support in the web interface" -msgstr "" +#: common/models.py:1332 +msgid "Enable automatic backup of database and media files" +msgstr "Ativar cópia de segurança automática do banco de dados e arquivos de mídia" + +#: common/models.py:1337 +msgid "Auto Backup Interval" +msgstr "Intervalo de Backup Automático" #: common/models.py:1338 -msgid "Barcode Input Delay" -msgstr "" +msgid "Specify number of days between automated backup events" +msgstr "Especificar o número de dia entre as cópias de segurança" -#: common/models.py:1339 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1345 -msgid "Barcode Webcam Support" -msgstr "Suporte a webcam de código de barras" +#: common/models.py:1344 +msgid "Task Deletion Interval" +msgstr "Intervalo para Excluir da Tarefa" #: common/models.py:1346 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" +msgid "Background task results will be deleted after specified number of days" +msgstr "Os resultados da tarefa no plano de fundo serão excluídos após um número especificado de dias" -#: common/models.py:1351 -msgid "Part Revisions" -msgstr "" +#: common/models.py:1353 +msgid "Error Log Deletion Interval" +msgstr "Intervalo para Excluir do Registro de Erro" -#: common/models.py:1352 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1357 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1358 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1361 -msgid "Allow Duplicate IPN" -msgstr "" +#: common/models.py:1355 +msgid "Error logs will be deleted after specified number of days" +msgstr "Registros de erros serão excluídos após um número especificado de dias" #: common/models.py:1362 -msgid "Allow multiple parts to share the same IPN" -msgstr "" +msgid "Notification Deletion Interval" +msgstr "Intervalo para Excluir de Notificação" -#: common/models.py:1367 -msgid "Allow Editing IPN" -msgstr "" +#: common/models.py:1364 +msgid "User notifications will be deleted after specified number of days" +msgstr "Notificações de usuários será excluído após um número especificado de dias" -#: common/models.py:1368 -msgid "Allow changing the IPN value while editing a part" -msgstr "" +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "Suporte aos códigos de barras" -#: common/models.py:1373 -msgid "Copy Part BOM Data" -msgstr "" +#: common/models.py:1372 +msgid "Enable barcode scanner support in the web interface" +msgstr "Ativar suporte a leitor de código de barras na interface web" -#: common/models.py:1374 -msgid "Copy BOM data by default when duplicating a part" -msgstr "" +#: common/models.py:1377 +msgid "Barcode Input Delay" +msgstr "Atraso na entrada de código de barras" -#: common/models.py:1379 -msgid "Copy Part Parameter Data" -msgstr "" +#: common/models.py:1378 +msgid "Barcode input processing delay time" +msgstr "Tempo de atraso de processamento de entrada de barras" -#: common/models.py:1380 -msgid "Copy parameter data by default when duplicating a part" -msgstr "" +#: common/models.py:1384 +msgid "Barcode Webcam Support" +msgstr "Suporte a código de barras via Câmera" #: common/models.py:1385 -msgid "Copy Part Test Data" -msgstr "" +msgid "Allow barcode scanning via webcam in browser" +msgstr "Permitir escanear código de barras por câmera pelo navegador" -#: common/models.py:1386 -msgid "Copy test data by default when duplicating a part" -msgstr "" +#: common/models.py:1390 +msgid "Part Revisions" +msgstr "Revisões de peças" #: common/models.py:1391 +msgid "Enable revision field for Part" +msgstr "Habilitar campo de revisão para a Peça" + +#: common/models.py:1396 +msgid "IPN Regex" +msgstr "Regex IPN" + +#: common/models.py:1397 +msgid "Regular expression pattern for matching Part IPN" +msgstr "Padrão de expressão regular adequado para Peça IPN" + +#: common/models.py:1400 +msgid "Allow Duplicate IPN" +msgstr "Permitir Duplicação IPN" + +#: common/models.py:1401 +msgid "Allow multiple parts to share the same IPN" +msgstr "Permitir que várias peças compartilhem o mesmo IPN" + +#: common/models.py:1406 +msgid "Allow Editing IPN" +msgstr "Permitir Edição IPN" + +#: common/models.py:1407 +msgid "Allow changing the IPN value while editing a part" +msgstr "Permitir trocar o valor do IPN enquanto se edita a peça" + +#: common/models.py:1412 +msgid "Copy Part BOM Data" +msgstr "Copiar dados da LDM da Peça" + +#: common/models.py:1413 +msgid "Copy BOM data by default when duplicating a part" +msgstr "Copiar dados da LDM por padrão quando duplicar a peça" + +#: common/models.py:1418 +msgid "Copy Part Parameter Data" +msgstr "Copiar Dados de Parâmetro da Peça" + +#: common/models.py:1419 +msgid "Copy parameter data by default when duplicating a part" +msgstr "Copiar dados de parâmetros por padrão quando duplicar uma peça" + +#: common/models.py:1424 +msgid "Copy Part Test Data" +msgstr "Copiar Dados Teste da Peça" + +#: common/models.py:1425 +msgid "Copy test data by default when duplicating a part" +msgstr "Copiar dados de teste por padrão quando duplicar a peça" + +#: common/models.py:1430 msgid "Copy Category Parameter Templates" -msgstr "" +msgstr "Copiar Parâmetros dos Modelos de Categoria" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" -msgstr "" +msgstr "Copiar parâmetros do modelo de categoria quando criar uma peça" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" -msgstr "" +msgstr "Modelo" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" -msgstr "" +msgstr "Peças são modelos por padrão" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" -msgstr "" +msgstr "Montagem" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" -msgstr "" +msgstr "Peças podem ser montadas a partir de outros componentes por padrão" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" -msgstr "" +msgstr "Componente" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" -msgstr "" +msgstr "Peças podem ser usadas como sub-componentes por padrão" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" -msgstr "" +msgstr "Comprável" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" -msgstr "" +msgstr "Peças são compráveis por padrão" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" -msgstr "" +msgstr "Vendível" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" -msgstr "" +msgstr "Peças vão vendíveis por padrão" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" -msgstr "" +msgstr "Rastreável" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" -msgstr "" +msgstr "Peças vão rastreáveis por padrão" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" -msgstr "" - -#: common/models.py:1434 -msgid "Parts are virtual by default" -msgstr "" - -#: common/models.py:1439 -msgid "Show Import in Views" -msgstr "" - -#: common/models.py:1440 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1445 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1446 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1451 -msgid "Initial Stock Data" -msgstr "" - -#: common/models.py:1452 -msgid "Allow creation of initial stock when adding a new part" -msgstr "" - -#: common/models.py:1457 templates/js/translated/part.js:107 -msgid "Initial Supplier Data" -msgstr "" - -#: common/models.py:1459 -msgid "Allow creation of initial supplier data when adding a new part" -msgstr "" - -#: common/models.py:1465 -msgid "Part Name Display Format" -msgstr "" - -#: common/models.py:1466 -msgid "Format to display the part name" -msgstr "" - -#: common/models.py:1472 -msgid "Part Category Default Icon" -msgstr "" +msgstr "Virtual" #: common/models.py:1473 -msgid "Part category default icon (empty means no icon)" -msgstr "" +msgid "Parts are virtual by default" +msgstr "Peças são virtuais por padrão" -#: common/models.py:1477 -msgid "Enforce Parameter Units" -msgstr "" +#: common/models.py:1478 +msgid "Show Import in Views" +msgstr "Mostrar Importações em Visualizações" #: common/models.py:1479 -msgid "If units are provided, parameter values must match the specified units" -msgstr "" +msgid "Display the import wizard in some part views" +msgstr "Exibir o assistente de importação em algumas visualizações de partes" + +#: common/models.py:1484 +msgid "Show related parts" +msgstr "Mostra peças relacionadas" #: common/models.py:1485 -msgid "Minimum Pricing Decimal Places" -msgstr "" +msgid "Display related parts for a part" +msgstr "Mostrar peças relacionadas para uma peça" -#: common/models.py:1487 -msgid "Minimum number of decimal places to display when rendering pricing data" -msgstr "" +#: common/models.py:1490 +msgid "Initial Stock Data" +msgstr "Dados Iniciais de Estoque" -#: common/models.py:1493 -msgid "Maximum Pricing Decimal Places" -msgstr "" +#: common/models.py:1491 +msgid "Allow creation of initial stock when adding a new part" +msgstr "Permitir Criação de estoque inicial quando adicional uma nova peça" -#: common/models.py:1495 -msgid "Maximum number of decimal places to display when rendering pricing data" -msgstr "" +#: common/models.py:1496 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" +msgstr "Dados Iniciais de Fornecedor" -#: common/models.py:1501 -msgid "Use Supplier Pricing" -msgstr "" +#: common/models.py:1498 +msgid "Allow creation of initial supplier data when adding a new part" +msgstr "Permitir criação de dados iniciais de fornecedor quando adicionar uma nova peça" -#: common/models.py:1503 -msgid "Include supplier price breaks in overall pricing calculations" -msgstr "" +#: common/models.py:1504 +msgid "Part Name Display Format" +msgstr "Formato de Exibição do Nome da Peça" -#: common/models.py:1509 -msgid "Purchase History Override" -msgstr "" +#: common/models.py:1505 +msgid "Format to display the part name" +msgstr "Formato para exibir o nome da peça" #: common/models.py:1511 -msgid "Historical purchase order pricing overrides supplier price breaks" -msgstr "" +msgid "Part Category Default Icon" +msgstr "Ícone de Categoria de Peça Padrão" -#: common/models.py:1517 -msgid "Use Stock Item Pricing" -msgstr "" +#: common/models.py:1512 +msgid "Part category default icon (empty means no icon)" +msgstr "Ícone padrão de categoria de peça (vazio significa sem ícone)" -#: common/models.py:1519 -msgid "Use pricing from manually entered stock data for pricing calculations" -msgstr "" +#: common/models.py:1516 +msgid "Enforce Parameter Units" +msgstr "Forçar Unidades de Parâmetro" -#: common/models.py:1525 -msgid "Stock Item Pricing Age" -msgstr "" +#: common/models.py:1518 +msgid "If units are provided, parameter values must match the specified units" +msgstr "Se as unidades são fornecidas, os valores do parâmetro devem corresponder às unidades especificadas" -#: common/models.py:1527 -msgid "Exclude stock items older than this number of days from pricing calculations" -msgstr "" +#: common/models.py:1524 +msgid "Minimum Pricing Decimal Places" +msgstr "Mínimo de Casas Decimais do Preço" + +#: common/models.py:1526 +msgid "Minimum number of decimal places to display when rendering pricing data" +msgstr "Mínimo número de casas decimais a exibir quando renderizar dados de preços" + +#: common/models.py:1532 +msgid "Maximum Pricing Decimal Places" +msgstr "Máximo Casas Decimais de Preço" #: common/models.py:1534 -msgid "Use Variant Pricing" -msgstr "" - -#: common/models.py:1535 -msgid "Include variant pricing in overall pricing calculations" -msgstr "" +msgid "Maximum number of decimal places to display when rendering pricing data" +msgstr "Número máximo de casas decimais a exibir quando renderizar dados de preços" #: common/models.py:1540 -msgid "Active Variants Only" -msgstr "" +msgid "Use Supplier Pricing" +msgstr "Usar Preços do Fornecedor" #: common/models.py:1542 -msgid "Only use active variant parts for calculating variant pricing" -msgstr "" +msgid "Include supplier price breaks in overall pricing calculations" +msgstr "Incluir quebras de preço do fornecedor nos cálculos de preços globais" #: common/models.py:1548 -msgid "Pricing Rebuild Interval" -msgstr "" +msgid "Purchase History Override" +msgstr "Sobrescrever histórico de compra" #: common/models.py:1550 -msgid "Number of days before part pricing is automatically updated" -msgstr "" +msgid "Historical purchase order pricing overrides supplier price breaks" +msgstr "Histórico do pedido de compra substitui os intervalos dos preços do fornecedor" -#: common/models.py:1557 -msgid "Internal Prices" -msgstr "" +#: common/models.py:1556 +msgid "Use Stock Item Pricing" +msgstr "Usar Preços do Item em Estoque" #: common/models.py:1558 -msgid "Enable internal prices for parts" -msgstr "" +msgid "Use pricing from manually entered stock data for pricing calculations" +msgstr "Usar preço inserido manualmente no estoque para cálculos de valores" -#: common/models.py:1563 -msgid "Internal Price Override" -msgstr "" +#: common/models.py:1564 +msgid "Stock Item Pricing Age" +msgstr "Idade do preço do Item em Estoque" -#: common/models.py:1565 -msgid "If available, internal prices override price range calculations" -msgstr "" +#: common/models.py:1566 +msgid "Exclude stock items older than this number of days from pricing calculations" +msgstr "Não incluir itens em estoque mais velhos que este número de dias no cálculo de preços" -#: common/models.py:1571 -msgid "Enable label printing" -msgstr "" +#: common/models.py:1573 +msgid "Use Variant Pricing" +msgstr "Usar Preço Variável" -#: common/models.py:1572 -msgid "Enable label printing from the web interface" -msgstr "" - -#: common/models.py:1577 -msgid "Label Image DPI" -msgstr "" +#: common/models.py:1574 +msgid "Include variant pricing in overall pricing calculations" +msgstr "Incluir preços variáveis nos cálculos de valores gerais" #: common/models.py:1579 -msgid "DPI resolution when generating image files to supply to label printing plugins" -msgstr "" +msgid "Active Variants Only" +msgstr "Apenas Ativar Variáveis" -#: common/models.py:1585 -msgid "Enable Reports" -msgstr "" +#: common/models.py:1581 +msgid "Only use active variant parts for calculating variant pricing" +msgstr "Apenas usar peças variáveis ativas para calcular preço variáveis" -#: common/models.py:1586 -msgid "Enable generation of reports" -msgstr "" +#: common/models.py:1587 +msgid "Pricing Rebuild Interval" +msgstr "Intervalo de Reconstrução de Preços" -#: common/models.py:1591 templates/stats.html:25 -msgid "Debug Mode" -msgstr "" +#: common/models.py:1589 +msgid "Number of days before part pricing is automatically updated" +msgstr "Número de dias antes da atualização automática dos preços das peças" -#: common/models.py:1592 -msgid "Generate reports in debug mode (HTML output)" -msgstr "" +#: common/models.py:1596 +msgid "Internal Prices" +msgstr "Preços Internos" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 -msgid "Page Size" -msgstr "" +#: common/models.py:1597 +msgid "Enable internal prices for parts" +msgstr "Habilitar preços internos para peças" -#: common/models.py:1598 -msgid "Default page size for PDF reports" -msgstr "" - -#: common/models.py:1603 -msgid "Enable Test Reports" -msgstr "" +#: common/models.py:1602 +msgid "Internal Price Override" +msgstr "Sobrepor Valor Interno" #: common/models.py:1604 -msgid "Enable generation of test reports" -msgstr "" +msgid "If available, internal prices override price range calculations" +msgstr "Se disponível, preços internos sobrepõe variação de cálculos de preço" -#: common/models.py:1609 -msgid "Attach Test Reports" -msgstr "" +#: common/models.py:1610 +msgid "Enable label printing" +msgstr "Ativar impressão de etiquetas" #: common/models.py:1611 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" -msgstr "" +msgid "Enable label printing from the web interface" +msgstr "Ativar impressão de etiqueta pela interface da internet" -#: common/models.py:1617 -msgid "Globally Unique Serials" -msgstr "" +#: common/models.py:1616 +msgid "Label Image DPI" +msgstr "DPI da Imagem na Etiqueta" #: common/models.py:1618 -msgid "Serial numbers for stock items must be globally unique" -msgstr "" - -#: common/models.py:1623 -msgid "Autofill Serial Numbers" -msgstr "" +msgid "DPI resolution when generating image files to supply to label printing plugins" +msgstr "Resolução de DPI quando gerar arquivo de imagens para fornecer à extensão de impressão de etiquetas" #: common/models.py:1624 -msgid "Autofill serial numbers in forms" -msgstr "" +msgid "Enable Reports" +msgstr "Habilitar Relatórios" -#: common/models.py:1629 -msgid "Delete Depleted Stock" -msgstr "" +#: common/models.py:1625 +msgid "Enable generation of reports" +msgstr "Ativar geração de relatórios" + +#: common/models.py:1630 templates/stats.html:25 +msgid "Debug Mode" +msgstr "Modo de depuração" #: common/models.py:1631 -msgid "Determines default behaviour when a stock item is depleted" -msgstr "" +msgid "Generate reports in debug mode (HTML output)" +msgstr "Gerar relatórios em modo de depuração (saída HTML)" + +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 +msgid "Page Size" +msgstr "Tamanho da página" #: common/models.py:1637 -msgid "Batch Code Template" -msgstr "" +msgid "Default page size for PDF reports" +msgstr "Tamanho padrão da página PDF para relatórios" -#: common/models.py:1639 -msgid "Template for generating default batch codes for stock items" -msgstr "" +#: common/models.py:1642 +msgid "Enable Test Reports" +msgstr "Ativar Relatórios Teste" -#: common/models.py:1644 -msgid "Stock Expiry" -msgstr "" +#: common/models.py:1643 +msgid "Enable generation of test reports" +msgstr "Ativar geração de relatórios de teste" -#: common/models.py:1645 -msgid "Enable stock expiry functionality" -msgstr "" +#: common/models.py:1648 +msgid "Attach Test Reports" +msgstr "Anexar Relatórios de Teste" #: common/models.py:1650 -msgid "Sell Expired Stock" -msgstr "" - -#: common/models.py:1651 -msgid "Allow sale of expired stock" -msgstr "" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +msgstr "Quando imprimir um Relatório de Teste, anexar uma cópia do mesmo ao item de estoque associado" #: common/models.py:1656 -msgid "Stock Stale Time" -msgstr "" +msgid "Globally Unique Serials" +msgstr "Seriais Únicos Globais" -#: common/models.py:1658 -msgid "Number of days stock items are considered stale before expiring" -msgstr "" +#: common/models.py:1657 +msgid "Serial numbers for stock items must be globally unique" +msgstr "Números de série para itens de estoque devem ser globalmente únicos" -#: common/models.py:1665 -msgid "Build Expired Stock" -msgstr "" +#: common/models.py:1662 +msgid "Autofill Serial Numbers" +msgstr "Preenchimento automático de Números Seriais" -#: common/models.py:1666 -msgid "Allow building with expired stock" -msgstr "" +#: common/models.py:1663 +msgid "Autofill serial numbers in forms" +msgstr "Preencher números de série automaticamente no formulário" -#: common/models.py:1671 -msgid "Stock Ownership Control" -msgstr "" +#: common/models.py:1668 +msgid "Delete Depleted Stock" +msgstr "Excluir Estoque Esgotado" -#: common/models.py:1672 -msgid "Enable ownership control over stock locations and items" -msgstr "" +#: common/models.py:1670 +msgid "Determines default behaviour when a stock item is depleted" +msgstr "Determina o comportamento padrão quando um item de estoque é esgotado" -#: common/models.py:1677 -msgid "Stock Location Default Icon" -msgstr "" +#: common/models.py:1676 +msgid "Batch Code Template" +msgstr "Modelo de Código de Lote" #: common/models.py:1678 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1682 -msgid "Show Installed Stock Items" -msgstr "" +msgid "Template for generating default batch codes for stock items" +msgstr "Modelo para gerar códigos de lote padrão para itens de estoque" #: common/models.py:1683 -msgid "Display installed stock items in stock tables" -msgstr "" +msgid "Stock Expiry" +msgstr "Validade do Estoque" -#: common/models.py:1688 -msgid "Build Order Reference Pattern" -msgstr "" +#: common/models.py:1684 +msgid "Enable stock expiry functionality" +msgstr "Ativar função de validade de estoque" + +#: common/models.py:1689 +msgid "Sell Expired Stock" +msgstr "Vender estoque expirado" #: common/models.py:1690 -msgid "Required pattern for generating Build Order reference field" -msgstr "" +msgid "Allow sale of expired stock" +msgstr "Permitir venda de estoque expirado" -#: common/models.py:1696 -msgid "Enable Return Orders" -msgstr "" +#: common/models.py:1695 +msgid "Stock Stale Time" +msgstr "Tempo de Estoque Inativo" #: common/models.py:1697 -msgid "Enable return order functionality in the user interface" -msgstr "" - -#: common/models.py:1702 -msgid "Return Order Reference Pattern" -msgstr "" +msgid "Number of days stock items are considered stale before expiring" +msgstr "Número de dias em que os itens em estoque são considerados obsoleto antes de vencer" #: common/models.py:1704 -msgid "Required pattern for generating Return Order reference field" -msgstr "" +msgid "Build Expired Stock" +msgstr "Produzir Estoque Vencido" + +#: common/models.py:1705 +msgid "Allow building with expired stock" +msgstr "Permitir produção com estoque vencido" #: common/models.py:1710 -msgid "Edit Completed Return Orders" -msgstr "" +msgid "Stock Ownership Control" +msgstr "Controle de propriedade do estoque" -#: common/models.py:1712 -msgid "Allow editing of return orders after they have been completed" -msgstr "" +#: common/models.py:1711 +msgid "Enable ownership control over stock locations and items" +msgstr "Ativar controle de propriedade sobre locais e itens de estoque" -#: common/models.py:1718 -msgid "Sales Order Reference Pattern" -msgstr "" +#: common/models.py:1716 +msgid "Stock Location Default Icon" +msgstr "Ícone padrão do local de estoque" -#: common/models.py:1720 -msgid "Required pattern for generating Sales Order reference field" -msgstr "" +#: common/models.py:1717 +msgid "Stock location default icon (empty means no icon)" +msgstr "Ícone padrão de local de estoque (vazio significa sem ícone)" -#: common/models.py:1726 -msgid "Sales Order Default Shipment" -msgstr "" +#: common/models.py:1721 +msgid "Show Installed Stock Items" +msgstr "Mostrar Itens de Estoque Instalados" + +#: common/models.py:1722 +msgid "Display installed stock items in stock tables" +msgstr "Exibir itens de estoque instalados nas tabelas de estoque" #: common/models.py:1727 -msgid "Enable creation of default shipment with sales orders" -msgstr "" +msgid "Build Order Reference Pattern" +msgstr "Modelo de Referência de Pedidos de Produção" -#: common/models.py:1732 -msgid "Edit Completed Sales Orders" -msgstr "" +#: common/models.py:1729 +msgid "Required pattern for generating Build Order reference field" +msgstr "Modelo necessário para gerar campo de referência do Pedido de Produção" -#: common/models.py:1734 -msgid "Allow editing of sales orders after they have been shipped or completed" -msgstr "" +#: common/models.py:1735 +msgid "Enable Return Orders" +msgstr "Ativar Pedidos de Devolução" -#: common/models.py:1740 -msgid "Purchase Order Reference Pattern" -msgstr "" +#: common/models.py:1736 +msgid "Enable return order functionality in the user interface" +msgstr "Ativar funcionalidade de pedido de retorno na interface do usuário" -#: common/models.py:1742 -msgid "Required pattern for generating Purchase Order reference field" -msgstr "" +#: common/models.py:1741 +msgid "Return Order Reference Pattern" +msgstr "Modelo de Referência de Pedidos de Devolução" -#: common/models.py:1748 -msgid "Edit Completed Purchase Orders" -msgstr "" +#: common/models.py:1743 +msgid "Required pattern for generating Return Order reference field" +msgstr "Modelo necessário para gerar campo de referência do Pedido de Devolução" -#: common/models.py:1750 -msgid "Allow editing of purchase orders after they have been shipped or completed" -msgstr "" +#: common/models.py:1749 +msgid "Edit Completed Return Orders" +msgstr "Editar os Pedidos de Devolução Concluídos" -#: common/models.py:1756 -msgid "Auto Complete Purchase Orders" -msgstr "" +#: common/models.py:1751 +msgid "Allow editing of return orders after they have been completed" +msgstr "Permitir a edição de pedidos de devolução após serem enviados ou concluídos" -#: common/models.py:1758 -msgid "Automatically mark purchase orders as complete when all line items are received" -msgstr "" +#: common/models.py:1757 +msgid "Sales Order Reference Pattern" +msgstr "Modelo de Referência de Pedidos de Venda" + +#: common/models.py:1759 +msgid "Required pattern for generating Sales Order reference field" +msgstr "Modelo necessário para gerar campo de referência do Pedido de Venda" #: common/models.py:1765 -msgid "Enable password forgot" -msgstr "" +msgid "Sales Order Default Shipment" +msgstr "Envio Padrão de Pedidos de Venda" #: common/models.py:1766 -msgid "Enable password forgot function on the login pages" -msgstr "" +msgid "Enable creation of default shipment with sales orders" +msgstr "Habilitar criação de envio padrão com Pedidos de Vendas" #: common/models.py:1771 -msgid "Enable registration" -msgstr "" +msgid "Edit Completed Sales Orders" +msgstr "Editar os Pedidos de Vendas concluídos" -#: common/models.py:1772 -msgid "Enable self-registration for users on the login pages" -msgstr "" +#: common/models.py:1773 +msgid "Allow editing of sales orders after they have been shipped or completed" +msgstr "Permitir a edição de pedidos de vendas após serem enviados ou concluídos" -#: common/models.py:1777 -msgid "Enable SSO" -msgstr "" +#: common/models.py:1779 +msgid "Purchase Order Reference Pattern" +msgstr "Modelo de Referência de Pedidos de Compras" -#: common/models.py:1778 -msgid "Enable SSO on the login pages" -msgstr "" +#: common/models.py:1781 +msgid "Required pattern for generating Purchase Order reference field" +msgstr "Modelo necessário para gerar campo de referência do Pedido de Compra" -#: common/models.py:1783 -msgid "Enable SSO registration" -msgstr "" +#: common/models.py:1787 +msgid "Edit Completed Purchase Orders" +msgstr "Editar Pedidos de Compra Concluídos" -#: common/models.py:1785 -msgid "Enable self-registration via SSO for users on the login pages" -msgstr "" +#: common/models.py:1789 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "Permitir a edição de pedidos de compras após serem enviados ou concluídos" -#: common/models.py:1791 -msgid "Email required" -msgstr "" - -#: common/models.py:1792 -msgid "Require user to supply mail on signup" -msgstr "" +#: common/models.py:1795 +msgid "Auto Complete Purchase Orders" +msgstr "Autocompletar Pedidos de Compra" #: common/models.py:1797 -msgid "Auto-fill SSO users" -msgstr "" +msgid "Automatically mark purchase orders as complete when all line items are received" +msgstr "Marcar automaticamente os pedidos de compra como concluídos quando todos os itens de linha forem recebidos" -#: common/models.py:1799 -msgid "Automatically fill out user-details from SSO account-data" -msgstr "" +#: common/models.py:1804 +msgid "Enable password forgot" +msgstr "Habitar esquecer senha" #: common/models.py:1805 -msgid "Mail twice" -msgstr "" +msgid "Enable password forgot function on the login pages" +msgstr "Habilitar a função \"Esqueci minha senha\" nas páginas de acesso" -#: common/models.py:1806 -msgid "On signup ask users twice for their mail" -msgstr "" +#: common/models.py:1810 +msgid "Enable registration" +msgstr "Habilitar cadastro" #: common/models.py:1811 -msgid "Password twice" -msgstr "" +msgid "Enable self-registration for users on the login pages" +msgstr "Ativar auto-registro para usuários na página de entrada" -#: common/models.py:1812 -msgid "On signup ask users twice for their password" -msgstr "" +#: common/models.py:1816 +msgid "Enable SSO" +msgstr "Ativar SSO" #: common/models.py:1817 -msgid "Allowed domains" -msgstr "" +msgid "Enable SSO on the login pages" +msgstr "Ativar SSO na página de acesso" -#: common/models.py:1819 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" -msgstr "" +#: common/models.py:1822 +msgid "Enable SSO registration" +msgstr "Ativar registro SSO" -#: common/models.py:1825 -msgid "Group on signup" -msgstr "" +#: common/models.py:1824 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "Ativar auto-registro por SSO para usuários na página de entrada" -#: common/models.py:1826 -msgid "Group to which new users are assigned on registration" -msgstr "" +#: common/models.py:1830 +msgid "Email required" +msgstr "Email obrigatório" #: common/models.py:1831 -msgid "Enforce MFA" -msgstr "" +msgid "Require user to supply mail on signup" +msgstr "Exigir do usuário o e-mail no cadastro" -#: common/models.py:1832 -msgid "Users must use multifactor security." -msgstr "" +#: common/models.py:1836 +msgid "Auto-fill SSO users" +msgstr "Auto-preencher usuários SSO" -#: common/models.py:1837 -msgid "Check plugins on startup" -msgstr "" +#: common/models.py:1838 +msgid "Automatically fill out user-details from SSO account-data" +msgstr "Preencher automaticamente os detalhes do usuário a partir de dados da conta SSO" -#: common/models.py:1839 -msgid "Check that all plugins are installed on startup - enable in container environments" -msgstr "" +#: common/models.py:1844 +msgid "Mail twice" +msgstr "Enviar email duplo" -#: common/models.py:1848 -msgid "Enable URL integration" -msgstr "" +#: common/models.py:1845 +msgid "On signup ask users twice for their mail" +msgstr "No registro pedir aos usuários duas vezes pelo email" -#: common/models.py:1849 -msgid "Enable plugins to add URL routes" -msgstr "" +#: common/models.py:1850 +msgid "Password twice" +msgstr "Senha duas vezes" -#: common/models.py:1855 -msgid "Enable navigation integration" -msgstr "" +#: common/models.py:1851 +msgid "On signup ask users twice for their password" +msgstr "No registro pedir aos usuários duas vezes pela senha" #: common/models.py:1856 -msgid "Enable plugins to integrate into navigation" -msgstr "" +msgid "Allowed domains" +msgstr "Domínios permitidos" -#: common/models.py:1862 -msgid "Enable app integration" -msgstr "" +#: common/models.py:1858 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgstr "Restringir registros a certos domínios (separados por vírgula, começando com @)" -#: common/models.py:1863 -msgid "Enable plugins to add apps" -msgstr "" +#: common/models.py:1864 +msgid "Group on signup" +msgstr "Grupo no cadastro" -#: common/models.py:1869 -msgid "Enable schedule integration" -msgstr "" +#: common/models.py:1865 +msgid "Group to which new users are assigned on registration" +msgstr "Grupo ao qual novos usuários são atribuídos no registro" #: common/models.py:1870 -msgid "Enable plugins to run scheduled tasks" -msgstr "" +msgid "Enforce MFA" +msgstr "Forçar AMF" + +#: common/models.py:1871 +msgid "Users must use multifactor security." +msgstr "Os usuários devem usar uma segurança multifator." #: common/models.py:1876 -msgid "Enable event integration" +msgid "Check plugins on startup" +msgstr "Checar extensões no início" + +#: common/models.py:1878 +msgid "Check that all plugins are installed on startup - enable in container environments" +msgstr "Checar que todas as extensões instaladas no início — ativar em ambientes de contêineres" + +#: common/models.py:1886 +msgid "Check for plugin updates" msgstr "" -#: common/models.py:1877 -msgid "Enable plugins to respond to internal events" +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1883 -msgid "Enable project codes" -msgstr "" +#: common/models.py:1893 +msgid "Enable URL integration" +msgstr "Ativar integração URL" -#: common/models.py:1884 -msgid "Enable project codes for tracking projects" -msgstr "" +#: common/models.py:1894 +msgid "Enable plugins to add URL routes" +msgstr "Ativar extensão para adicionar rotas URL" -#: common/models.py:1889 -msgid "Stocktake Functionality" -msgstr "" +#: common/models.py:1900 +msgid "Enable navigation integration" +msgstr "Ativar integração de navegação" -#: common/models.py:1891 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" -msgstr "" - -#: common/models.py:1897 -msgid "Exclude External Locations" -msgstr "" - -#: common/models.py:1899 -msgid "Exclude stock items in external locations from stocktake calculations" -msgstr "" - -#: common/models.py:1905 -msgid "Automatic Stocktake Period" -msgstr "" +#: common/models.py:1901 +msgid "Enable plugins to integrate into navigation" +msgstr "Ativar extensões para integrar à navegação" #: common/models.py:1907 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" -msgstr "" +msgid "Enable app integration" +msgstr "Ativa integração com aplicativo" -#: common/models.py:1913 -msgid "Report Deletion Interval" -msgstr "" +#: common/models.py:1908 +msgid "Enable plugins to add apps" +msgstr "Ativar extensões para adicionar aplicativos" + +#: common/models.py:1914 +msgid "Enable schedule integration" +msgstr "Ativar integração do calendário" #: common/models.py:1915 -msgid "Stocktake reports will be deleted after specified number of days" -msgstr "" +msgid "Enable plugins to run scheduled tasks" +msgstr "Ativar extensões para executar tarefas agendadas" + +#: common/models.py:1921 +msgid "Enable event integration" +msgstr "Ativar integração de eventos" #: common/models.py:1922 +msgid "Enable plugins to respond to internal events" +msgstr "Ativar extensões para responder a eventos internos" + +#: common/models.py:1928 +msgid "Enable project codes" +msgstr "Habilitar códigos de projeto" + +#: common/models.py:1929 +msgid "Enable project codes for tracking projects" +msgstr "Ativar códigos de projeto para rastrear projetos" + +#: common/models.py:1934 +msgid "Stocktake Functionality" +msgstr "Funcionalidade de Balanço do Inventário" + +#: common/models.py:1936 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgstr "Ativar funcionalidade de balanço para gravar níveis de estoque e calcular seu valor" + +#: common/models.py:1942 +msgid "Exclude External Locations" +msgstr "Excluir Locais Externos" + +#: common/models.py:1944 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "Excluir itens de estoque em locais externos dos cálculos do estoque" + +#: common/models.py:1950 +msgid "Automatic Stocktake Period" +msgstr "Período de Balanço Automático" + +#: common/models.py:1952 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" +msgstr "Número de dias entre gravação do balanço de estoque (coloque zero para desativar)" + +#: common/models.py:1958 +msgid "Report Deletion Interval" +msgstr "Intervalo para Excluir o Relatório" + +#: common/models.py:1960 +msgid "Stocktake reports will be deleted after specified number of days" +msgstr "Relatórios de balanço serão apagados após um número de dias especificado" + +#: common/models.py:1967 msgid "Display Users full names" -msgstr "" +msgstr "Mostrar nomes completos dos usuários" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" -msgstr "" +msgstr "Mostrar Nomes Completos em vez de Nomes de Usuário" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" -msgstr "" - -#: common/models.py:1976 -msgid "Hide inactive parts" -msgstr "" - -#: common/models.py:1978 -msgid "Hide inactive parts in results displayed on the homepage" -msgstr "" - -#: common/models.py:1984 -msgid "Show subscribed parts" -msgstr "" - -#: common/models.py:1985 -msgid "Show subscribed parts on the homepage" -msgstr "" - -#: common/models.py:1990 -msgid "Show subscribed categories" -msgstr "" - -#: common/models.py:1991 -msgid "Show subscribed part categories on the homepage" -msgstr "" - -#: common/models.py:1996 -msgid "Show latest parts" -msgstr "" - -#: common/models.py:1997 -msgid "Show latest parts on the homepage" -msgstr "" - -#: common/models.py:2002 -msgid "Show unvalidated BOMs" -msgstr "" - -#: common/models.py:2003 -msgid "Show BOMs that await validation on the homepage" -msgstr "" - -#: common/models.py:2008 -msgid "Show recent stock changes" -msgstr "" - -#: common/models.py:2009 -msgid "Show recently changed stock items on the homepage" -msgstr "" - -#: common/models.py:2014 -msgid "Show low stock" -msgstr "" - -#: common/models.py:2015 -msgid "Show low stock items on the homepage" -msgstr "" - -#: common/models.py:2020 -msgid "Show depleted stock" -msgstr "" +msgstr "Senha de configurações (deve ser única — diferencia maiúsculas de minúsculas" #: common/models.py:2021 +msgid "Hide inactive parts" +msgstr "Ocultar peças inativas" + +#: common/models.py:2023 +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "Ocultar peças inativas nos resultados exibidos na página inicial" + +#: common/models.py:2029 +msgid "Show subscribed parts" +msgstr "Mostrar peças subscritas" + +#: common/models.py:2030 +msgid "Show subscribed parts on the homepage" +msgstr "Mostrar peças subscritas na tela inicial" + +#: common/models.py:2035 +msgid "Show subscribed categories" +msgstr "Mostrar categorias subscritas" + +#: common/models.py:2036 +msgid "Show subscribed part categories on the homepage" +msgstr "Mostrar categorias de peças subscritas na tela inicial" + +#: common/models.py:2041 +msgid "Show latest parts" +msgstr "Mostrar peças mais recentes" + +#: common/models.py:2042 +msgid "Show latest parts on the homepage" +msgstr "Mostrar as peças mais recentes na página inicial" + +#: common/models.py:2047 +msgid "Show unvalidated BOMs" +msgstr "Mostrar LDMs não validadas" + +#: common/models.py:2048 +msgid "Show BOMs that await validation on the homepage" +msgstr "Mostrar LDMs que aguardam validação na página inicial" + +#: common/models.py:2053 +msgid "Show recent stock changes" +msgstr "Mostrar alterações recentes de estoque" + +#: common/models.py:2054 +msgid "Show recently changed stock items on the homepage" +msgstr "Mostrar itens de estoque alterados recentemente na página inicial" + +#: common/models.py:2059 +msgid "Show low stock" +msgstr "Mostrar estoque baixo" + +#: common/models.py:2060 +msgid "Show low stock items on the homepage" +msgstr "Mostrar itens de baixo estoque na página inicial" + +#: common/models.py:2065 +msgid "Show depleted stock" +msgstr "Mostrar estoque esgotado" + +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" -msgstr "" +msgstr "Mostrar itens sem estoque na página inicial" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" -msgstr "" +msgstr "Mostrar estoque necessário" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" -msgstr "" +msgstr "Mostrar itens de estoque necessários para produções na tela inicial" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" -msgstr "" +msgstr "Mostrar estoque expirado" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" -msgstr "" +msgstr "Mostrar expirados itens em estoque na tela inicial" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" -msgstr "" +msgstr "Mostrar estoque inativo" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" -msgstr "" +msgstr "Mostrar estoque inativo na tela inicial" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" -msgstr "" +msgstr "Mostrar produções pendentes" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" -msgstr "" +msgstr "Mostrar produções pendentes na tela inicial" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" -msgstr "" +msgstr "Mostrar produções atrasadas" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" -msgstr "" +msgstr "Mostrar produções atrasadas na tela inicial" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" -msgstr "" - -#: common/models.py:2057 -msgid "Show outstanding POs on the homepage" -msgstr "" - -#: common/models.py:2062 -msgid "Show overdue POs" -msgstr "" - -#: common/models.py:2063 -msgid "Show overdue POs on the homepage" -msgstr "" - -#: common/models.py:2068 -msgid "Show outstanding SOs" -msgstr "" - -#: common/models.py:2069 -msgid "Show outstanding SOs on the homepage" -msgstr "" - -#: common/models.py:2074 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:2075 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:2080 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:2081 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:2086 -msgid "Show News" -msgstr "" - -#: common/models.py:2087 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:2092 -msgid "Inline label display" -msgstr "" - -#: common/models.py:2094 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:2100 -msgid "Default label printer" -msgstr "" +msgstr "Mostrar pedidos de compra pendentes" #: common/models.py:2102 -msgid "Configure which label printer should be selected by default" -msgstr "" +msgid "Show outstanding POs on the homepage" +msgstr "Mostrar os Pedidos de Compras pendentes na página inicial" + +#: common/models.py:2107 +msgid "Show overdue POs" +msgstr "Mostrar Pedidos de Compra atrasados" #: common/models.py:2108 -msgid "Inline report display" -msgstr "" +msgid "Show overdue POs on the homepage" +msgstr "Mostrar os Pedidos de Compras atrasadas na tela inicial" -#: common/models.py:2110 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" +#: common/models.py:2113 +msgid "Show outstanding SOs" +msgstr "Mostrar pedidos de vendas pendentes" -#: common/models.py:2116 -msgid "Search Parts" -msgstr "" +#: common/models.py:2114 +msgid "Show outstanding SOs on the homepage" +msgstr "Mostrar os Pedidos de Vendas pendentes na página inicial" -#: common/models.py:2117 -msgid "Display parts in search preview window" -msgstr "" +#: common/models.py:2119 +msgid "Show overdue SOs" +msgstr "Mostrar Pedidos de Venda atrasados" -#: common/models.py:2122 -msgid "Search Supplier Parts" -msgstr "" +#: common/models.py:2120 +msgid "Show overdue SOs on the homepage" +msgstr "Mostrar os Pedidos de Vendas atrasadas na tela inicial" -#: common/models.py:2123 -msgid "Display supplier parts in search preview window" -msgstr "" +#: common/models.py:2125 +msgid "Show pending SO shipments" +msgstr "Mostrar remessas de OV pendentes" -#: common/models.py:2128 -msgid "Search Manufacturer Parts" -msgstr "" +#: common/models.py:2126 +msgid "Show pending SO shipments on the homepage" +msgstr "Mostrar envios OV pendentes na tela inicial" -#: common/models.py:2129 -msgid "Display manufacturer parts in search preview window" -msgstr "" +#: common/models.py:2131 +msgid "Show News" +msgstr "Mostrar notícias" -#: common/models.py:2134 -msgid "Hide Inactive Parts" -msgstr "" +#: common/models.py:2132 +msgid "Show news on the homepage" +msgstr "Mostrar notícias na tela inicial" -#: common/models.py:2135 -msgid "Excluded inactive parts from search preview window" -msgstr "" +#: common/models.py:2137 +msgid "Inline label display" +msgstr "Mostrar etiqueta em linha" -#: common/models.py:2140 -msgid "Search Categories" -msgstr "" +#: common/models.py:2139 +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "Mostrar etiquetas em PDF no navegador, ao invés de baixar o arquivo" -#: common/models.py:2141 -msgid "Display part categories in search preview window" -msgstr "" - -#: common/models.py:2146 -msgid "Search Stock" -msgstr "" +#: common/models.py:2145 +msgid "Default label printer" +msgstr "Impressora de etiquetas padrão" #: common/models.py:2147 -msgid "Display stock items in search preview window" -msgstr "" +msgid "Configure which label printer should be selected by default" +msgstr "Configurar qual impressora de etiqueta deve ser selecionada por padrão" -#: common/models.py:2152 -msgid "Hide Unavailable Stock Items" -msgstr "" +#: common/models.py:2153 +msgid "Inline report display" +msgstr "Mostrar relatório em linha" -#: common/models.py:2154 -msgid "Exclude stock items which are not available from the search preview window" -msgstr "" - -#: common/models.py:2160 -msgid "Search Locations" -msgstr "" +#: common/models.py:2155 +msgid "Display PDF reports in the browser, instead of downloading as a file" +msgstr "Mostrar relatórios em PDF no navegador, ao invés de baixar o arquivo" #: common/models.py:2161 -msgid "Display stock locations in search preview window" -msgstr "" +msgid "Search Parts" +msgstr "Procurar Peças" -#: common/models.py:2166 -msgid "Search Companies" -msgstr "" +#: common/models.py:2162 +msgid "Display parts in search preview window" +msgstr "Mostrar peças na janela de visualização de pesquisa" #: common/models.py:2167 -msgid "Display companies in search preview window" -msgstr "" +msgid "Search Supplier Parts" +msgstr "Buscar Peças do Fornecedor" -#: common/models.py:2172 -msgid "Search Build Orders" -msgstr "" +#: common/models.py:2168 +msgid "Display supplier parts in search preview window" +msgstr "Mostrar fornecedor de peças na janela de visualização de pesquisa" #: common/models.py:2173 -msgid "Display build orders in search preview window" -msgstr "" +msgid "Search Manufacturer Parts" +msgstr "Buscar peças do fabricante" -#: common/models.py:2178 -msgid "Search Purchase Orders" -msgstr "" +#: common/models.py:2174 +msgid "Display manufacturer parts in search preview window" +msgstr "Mostrar fabricante de peças na janela de visualização de pesquisa" #: common/models.py:2179 -msgid "Display purchase orders in search preview window" -msgstr "" +msgid "Hide Inactive Parts" +msgstr "Ocultar peças inativas" -#: common/models.py:2184 -msgid "Exclude Inactive Purchase Orders" -msgstr "" +#: common/models.py:2180 +msgid "Excluded inactive parts from search preview window" +msgstr "Não incluir peças inativas na janela de visualização de pesquisa" + +#: common/models.py:2185 +msgid "Search Categories" +msgstr "Pesquisar Categorias" #: common/models.py:2186 -msgid "Exclude inactive purchase orders from search preview window" -msgstr "" +msgid "Display part categories in search preview window" +msgstr "Mostrar categoria das peças na janela de visualização de pesquisa" + +#: common/models.py:2191 +msgid "Search Stock" +msgstr "Pesquisar Estoque" #: common/models.py:2192 -msgid "Search Sales Orders" -msgstr "" +msgid "Display stock items in search preview window" +msgstr "Mostrar itens do estoque na janela de visualização de pesquisa" -#: common/models.py:2193 -msgid "Display sales orders in search preview window" -msgstr "" +#: common/models.py:2197 +msgid "Hide Unavailable Stock Items" +msgstr "Ocultar itens do estoque indisponíveis" -#: common/models.py:2198 -msgid "Exclude Inactive Sales Orders" -msgstr "" +#: common/models.py:2199 +msgid "Exclude stock items which are not available from the search preview window" +msgstr "Não incluir itens de estoque que não estão disponíveis na janela de visualização de pesquisa" -#: common/models.py:2200 -msgid "Exclude inactive sales orders from search preview window" -msgstr "" +#: common/models.py:2205 +msgid "Search Locations" +msgstr "Procurar Locais" #: common/models.py:2206 -msgid "Search Return Orders" -msgstr "" +msgid "Display stock locations in search preview window" +msgstr "Mostrar locais de estoque na janela de visualização de pesquisa" -#: common/models.py:2207 -msgid "Display return orders in search preview window" -msgstr "" +#: common/models.py:2211 +msgid "Search Companies" +msgstr "Pesquisar empresas" #: common/models.py:2212 -msgid "Exclude Inactive Return Orders" -msgstr "" +msgid "Display companies in search preview window" +msgstr "Mostrar empresas na janela de visualização de pesquisa" -#: common/models.py:2214 -msgid "Exclude inactive return orders from search preview window" -msgstr "" +#: common/models.py:2217 +msgid "Search Build Orders" +msgstr "Procurar Pedidos de Produção" -#: common/models.py:2220 -msgid "Search Preview Results" -msgstr "" +#: common/models.py:2218 +msgid "Display build orders in search preview window" +msgstr "Mostrar pedidos de produção na janela de visualização de pesquisa" -#: common/models.py:2222 -msgid "Number of results to show in each section of the search preview window" -msgstr "" +#: common/models.py:2223 +msgid "Search Purchase Orders" +msgstr "Mostrar Pedido de Compras" -#: common/models.py:2228 -msgid "Regex Search" -msgstr "" +#: common/models.py:2224 +msgid "Display purchase orders in search preview window" +msgstr "Mostrar pedidos de compra na janela de visualização de pesquisa" #: common/models.py:2229 -msgid "Enable regular expressions in search queries" -msgstr "" +msgid "Exclude Inactive Purchase Orders" +msgstr "Não incluir Pedidos de Compras Inativos" -#: common/models.py:2234 -msgid "Whole Word Search" -msgstr "" +#: common/models.py:2231 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "Não incluir pedidos de compras inativos na janela de visualização de pesquisa" -#: common/models.py:2235 -msgid "Search queries return results for whole word matches" -msgstr "" +#: common/models.py:2237 +msgid "Search Sales Orders" +msgstr "Procurar Pedidos de Vendas" -#: common/models.py:2240 -msgid "Show Quantity in Forms" -msgstr "" +#: common/models.py:2238 +msgid "Display sales orders in search preview window" +msgstr "Mostrar pedidos de vendas na janela de visualização de pesquisa" -#: common/models.py:2241 -msgid "Display available part quantity in some forms" -msgstr "" +#: common/models.py:2243 +msgid "Exclude Inactive Sales Orders" +msgstr "Não Incluir Pedidos de Compras Inativas" -#: common/models.py:2246 -msgid "Escape Key Closes Forms" -msgstr "" +#: common/models.py:2245 +msgid "Exclude inactive sales orders from search preview window" +msgstr "Não incluir pedidos de vendas inativos na janela de visualização de pesquisa" -#: common/models.py:2247 -msgid "Use the escape key to close modal forms" -msgstr "" +#: common/models.py:2251 +msgid "Search Return Orders" +msgstr "Procurar Pedidos de Devolução" #: common/models.py:2252 -msgid "Fixed Navbar" -msgstr "" +msgid "Display return orders in search preview window" +msgstr "Mostrar pedidos de devolução na janela de visualização de pesquisa" -#: common/models.py:2253 -msgid "The navbar position is fixed to the top of the screen" -msgstr "" - -#: common/models.py:2258 -msgid "Date Format" -msgstr "" +#: common/models.py:2257 +msgid "Exclude Inactive Return Orders" +msgstr "Não Incluir Pedidos de Devolução Inativas" #: common/models.py:2259 -msgid "Preferred format for displaying dates" -msgstr "" +msgid "Exclude inactive return orders from search preview window" +msgstr "Não incluir pedidos de devolução inativos na janela de visualização de pesquisa" -#: common/models.py:2272 part/templates/part/detail.html:41 -msgid "Part Scheduling" -msgstr "" +#: common/models.py:2265 +msgid "Search Preview Results" +msgstr "Mostrar Resultados Anteriores" + +#: common/models.py:2267 +msgid "Number of results to show in each section of the search preview window" +msgstr "Número de resultados mostrados em cada seção da janela de visualização de pesquisa" #: common/models.py:2273 -msgid "Display part scheduling information" -msgstr "" +msgid "Regex Search" +msgstr "Pesquisa de Regex" -#: common/models.py:2278 part/templates/part/detail.html:62 -msgid "Part Stocktake" -msgstr "" +#: common/models.py:2274 +msgid "Enable regular expressions in search queries" +msgstr "Permitir expressôes comuns nas conultas de pesquisas" + +#: common/models.py:2279 +msgid "Whole Word Search" +msgstr "Busca de Palavras Inteira" #: common/models.py:2280 -msgid "Display part stocktake information (if stocktake functionality is enabled)" -msgstr "" +msgid "Search queries return results for whole word matches" +msgstr "Pesquisa retorna que palavra inteira coincide" + +#: common/models.py:2285 +msgid "Show Quantity in Forms" +msgstr "Mostrar Quantidade nos Formulários" #: common/models.py:2286 +msgid "Display available part quantity in some forms" +msgstr "Mostrar a quantidade de peças disponíveis em alguns formulários" + +#: common/models.py:2291 +msgid "Escape Key Closes Forms" +msgstr "Tecla Esc Fecha Formulários" + +#: common/models.py:2292 +msgid "Use the escape key to close modal forms" +msgstr "Usar a tecla Esc para fechar fomulários modais" + +#: common/models.py:2297 +msgid "Fixed Navbar" +msgstr "Fixar Navbar" + +#: common/models.py:2298 +msgid "The navbar position is fixed to the top of the screen" +msgstr "A posição do Navbar é fixa no topo da tela" + +#: common/models.py:2303 +msgid "Date Format" +msgstr "Formato da data" + +#: common/models.py:2304 +msgid "Preferred format for displaying dates" +msgstr "Formato preferido para mostrar datas" + +#: common/models.py:2317 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "Agendamento de peças" + +#: common/models.py:2318 +msgid "Display part scheduling information" +msgstr "Mostrar informações de agendamento de peças" + +#: common/models.py:2323 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "Balanço de Peça" + +#: common/models.py:2325 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "Mostrar informação de balanço da peça (se a funcionalidade de balanço estiver habilitada)" + +#: common/models.py:2331 msgid "Table String Length" -msgstr "" +msgstr "Comprimento da Tabela de Frases" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" -msgstr "" +msgstr "Limite máximo de comprimento para frases exibidas nas visualizações de tabela" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" -msgstr "" +msgstr "Modelo de rótulo padrão da peça" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" -msgstr "" +msgstr "O modelo de rótulo da peça a ser selecionado automaticamente" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" -msgstr "" +msgstr "Modelo padrão de item de estoque" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" -msgstr "" +msgstr "O modelo de rótulo do item a ser selecionado automaticamente" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" -msgstr "" +msgstr "Modelo de rótulo de localização do estoque padrão" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" -msgstr "" - -#: common/models.py:2316 -msgid "Receive error reports" -msgstr "" - -#: common/models.py:2317 -msgid "Receive notifications for system errors" -msgstr "" +msgstr "O modelo de rótulo do local de estoque a ser selecionado automaticamente" #: common/models.py:2361 -msgid "Price break quantity" +msgid "Receive error reports" +msgstr "Receber relatório de erros" + +#: common/models.py:2362 +msgid "Receive notifications for system errors" +msgstr "Receber notificações para erros do sistema" + +#: common/models.py:2367 +msgid "Last used printing machines" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 +msgid "Price break quantity" +msgstr "Quantidade de Parcelamentos" + +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" -msgstr "" +msgstr "Preço" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" -msgstr "" +msgstr "Preço unitário na quantidade especificada" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" -msgstr "" +msgstr "Ponto final" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" -msgstr "" +msgstr "Ponto final em qual o gancho web foi recebido" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" -msgstr "" +msgstr "Nome para este webhook" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 #: templates/js/translated/table_filters.js:712 users/models.py:169 msgid "Active" -msgstr "" +msgstr "Ativo" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" -msgstr "" +msgstr "Este gancho web está ativo" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" -msgstr "" +msgstr "Token" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" -msgstr "" +msgstr "Token de acesso" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" -msgstr "" +msgstr "Segredo" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" -msgstr "" +msgstr "Segredo compartilhado para HMAC" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" -msgstr "" +msgstr "ID da Mensagem" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" -msgstr "" +msgstr "Identificador exclusivo desta mensagem" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" -msgstr "" +msgstr "Servidor" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" -msgstr "" +msgstr "Servidor do qual esta mensagem foi recebida" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" -msgstr "" +msgstr "Cabeçalho" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" -msgstr "" +msgstr "Cabeçalho da mensagem" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" -msgstr "" +msgstr "Corpo" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" -msgstr "" +msgstr "Corpo da mensagem" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" -msgstr "" +msgstr "Ponto do qual esta mensagem foi recebida" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" -msgstr "" +msgstr "Trabalhado em" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" -msgstr "" +msgstr "O trabalho desta mensagem foi concluído?" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" -msgstr "" +msgstr "Id" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" -msgstr "" +msgstr "Título" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" -msgstr "" +msgstr "Publicado" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" -msgstr "" +msgstr "Autor" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" -msgstr "" +msgstr "Resumo" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" -msgstr "" +msgstr "Lida" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" -msgstr "" +msgstr "Esta notícia do item foi lida?" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3556,76 +3612,136 @@ msgstr "" #: templates/hover_image.html:7 templates/hover_image.html:9 #: templates/modals.html:6 msgid "Image" -msgstr "" +msgstr "Imagem" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" -msgstr "" +msgstr "Arquivo de imagem" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" -msgstr "" +msgstr "Nome da unidade deve ser um identificador válido" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" -msgstr "" +msgstr "Nome da unidade" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" -msgstr "" +msgstr "Símbolo" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" -msgstr "" +msgstr "Símbolo de unidade opcional" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" -msgstr "" +msgstr "Definição" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" -msgstr "" +msgstr "Definição de unidade" #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" -msgstr "" +msgstr "Novo {verbose_name}" #: common/notifications.py:316 msgid "A new order has been created and assigned to you" -msgstr "" +msgstr "Um novo pedido foi criado e atribuído a você" #: common/notifications.py:322 #, python-brace-format msgid "{verbose_name} canceled" -msgstr "" +msgstr "{verbose_name} cancelado" #: common/notifications.py:324 msgid "A order that is assigned to you was canceled" -msgstr "" +msgstr "Um pedido atribuído a você foi cancelado" #: common/notifications.py:330 common/notifications.py:337 msgid "Items Received" -msgstr "" +msgstr "Itens Recebidos" #: common/notifications.py:332 msgid "Items have been received against a purchase order" -msgstr "" +msgstr "Os itens de um pedido de compra foram recebidos" #: common/notifications.py:339 msgid "Items have been received against a return order" -msgstr "" +msgstr "Os itens de um pedido de devolução foram recebidos" #: common/notifications.py:457 msgid "Error raised by plugin" -msgstr "" +msgstr "Erro criado pela extensão" + +#: common/serializers.py:333 +msgid "Is Running" +msgstr "Executando" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "Tarefas Pendentes" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "Tarefas Agendadas" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "Tarefas com Falhas" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "ID da Tarefa" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "ID Único da Tarefa" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "Bloquear" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "Tempo de bloqueio" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "Nome da tarefa" + +#: common/serializers.py:372 +msgid "Function" +msgstr "Função" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "Nome da função" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "Argumentos" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "Argumentos da tarefa" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "Argumentos de Palavra-chave" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "Argumentos Palavra-chave da Tarefa" #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" -msgstr "" +msgstr "Carregar Arquivo" #: common/views.py:84 order/templates/order/order_wizard/match_fields.html:52 #: order/views.py:119 @@ -3633,19 +3749,19 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:52 part/views.py:110 #: templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" -msgstr "" +msgstr "Coincidir campos" #: common/views.py:84 msgid "Match Items" -msgstr "" +msgstr "Coincidir Itens" #: common/views.py:401 msgid "Fields matching failed" -msgstr "" +msgstr "Os campos não correspondem" #: common/views.py:464 msgid "Parts imported" -msgstr "" +msgstr "Peças importadas" #: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 @@ -3656,186 +3772,186 @@ msgstr "" #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" -msgstr "" +msgstr "Passo Anterior" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" -msgstr "" +msgstr "Descrição da empresa" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" -msgstr "" +msgstr "Descrição da empresa" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" -msgstr "" +msgstr "Página Web" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" -msgstr "" +msgstr "URL do Site da empresa" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" -msgstr "" +msgstr "Número de telefone" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" -msgstr "" +msgstr "Número de telefone do contato" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" -msgstr "" +msgstr "Endereço de e-mail do contato" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" -msgstr "" +msgstr "Contato" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" -msgstr "" +msgstr "Ponto de contato" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" -msgstr "" +msgstr "Link para informações externas da empresa" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" -msgstr "" +msgstr "é cliente" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" -msgstr "" +msgstr "Você vende itens para esta empresa?" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" -msgstr "" +msgstr "é fornecedor" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" -msgstr "" +msgstr "Você compra itens desta empresa?" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" -msgstr "" +msgstr "é fabricante" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" -msgstr "" +msgstr "Esta empresa fabrica peças?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" -msgstr "" +msgstr "Moeda padrão utilizada para esta empresa" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" -msgstr "" +msgstr "Empresa" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" -msgstr "" +msgstr "Selecione a Empresa" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" -msgstr "" +msgstr "Título do endereço" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" -msgstr "" +msgstr "Título descrevendo a entrada de endereço" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" -msgstr "" +msgstr "Endereço Principal" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" -msgstr "" +msgstr "Definir como endereço principal" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" -msgstr "" +msgstr "Linha 1" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" -msgstr "" +msgstr "Linha de endereço 1" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" -msgstr "" +msgstr "Linha 2" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" -msgstr "" +msgstr "Linha de endereço 2" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" -msgstr "" +msgstr "Código Postal" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" -msgstr "" +msgstr "Cidade/Região" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" -msgstr "" +msgstr "Código Postal Cidade / Região" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" -msgstr "" +msgstr "Estado/Provincia" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" -msgstr "" +msgstr "Estado ou Província" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" -msgstr "" +msgstr "País" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" -msgstr "" +msgstr "País do endereço" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" -msgstr "" +msgstr "Notas de envio da transportadora" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" -msgstr "" +msgstr "Notas para o envio da transportadora" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" -msgstr "" +msgstr "Notas de envio interno" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" -msgstr "" +msgstr "Notas de envio para uso interno" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" -msgstr "" +msgstr "Link para as informações do endereço (externo)" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" -msgstr "" +msgstr "Peça base" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" -msgstr "" +msgstr "Selecionar peça" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3845,13 +3961,13 @@ msgstr "" #: templates/js/translated/company.js:1601 #: templates/js/translated/table_filters.js:792 msgid "Manufacturer" -msgstr "" +msgstr "Fabricante" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" -msgstr "" +msgstr "Selecionar fabricante" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3860,69 +3976,69 @@ msgstr "" #: templates/js/translated/purchase_order.js:1848 #: templates/js/translated/purchase_order.js:2050 msgid "MPN" -msgstr "" +msgstr "NPF" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" -msgstr "" +msgstr "Número de Peça do Fabricante" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" -msgstr "" +msgstr "URL do link externo da peça do fabricante" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" -msgstr "" +msgstr "Descrição da peça do fabricante" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" -msgstr "" +msgstr "Peça do Fabricante" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" -msgstr "" +msgstr "Nome do parâmetro" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" -msgstr "" +msgstr "Valor" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" -msgstr "" +msgstr "Valor do Parâmetro" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" -msgstr "" +msgstr "Unidades" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" -msgstr "" +msgstr "Unidades do parâmetro" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" -msgstr "" +msgstr "Unidades de pacote devem ser compatíveis com as unidades de peça base" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" -msgstr "" +msgstr "Unidades de pacote deve ser maior do que zero" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" -msgstr "" +msgstr "Parte do fabricante vinculado deve fazer referência à mesma peça base" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3935,60 +4051,60 @@ msgstr "" #: templates/js/translated/purchase_order.js:1686 #: templates/js/translated/table_filters.js:796 msgid "Supplier" -msgstr "" +msgstr "Fornecedor" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" -msgstr "" +msgstr "Selecione o fornecedor" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" -msgstr "" +msgstr "Unidade de reserva de estoque fornecedor" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" -msgstr "" +msgstr "Selecionar peça do fabricante" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" -msgstr "" +msgstr "URL do link externo da peça do fabricante" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" -msgstr "" +msgstr "Descrição da peça fornecedor" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" -msgstr "" +msgstr "Anotação" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" -msgstr "" +msgstr "preço base" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" -msgstr "" +msgstr "Taxa mínima (ex.: taxa de estoque)" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" -msgstr "" +msgstr "Embalagem" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" -msgstr "" +msgstr "Embalagem de peças" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3996,62 +4112,62 @@ msgstr "" #: templates/js/translated/purchase_order.js:2081 #: templates/js/translated/purchase_order.js:2098 msgid "Pack Quantity" -msgstr "" +msgstr "Quantidade de embalagens" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." -msgstr "" +msgstr "Quantidade total fornecida em um único pacote. Deixe em branco para itens únicos." -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" -msgstr "" +msgstr "múltiplo" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" -msgstr "" +msgstr "Pedir múltiplos" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" -msgstr "" +msgstr "Quantidade disponível do fornecedor" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" -msgstr "" +msgstr "Disponibilidade Atualizada" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" -msgstr "" +msgstr "Data da última atualização da disponibilidade dos dados" #: company/serializers.py:153 msgid "Default currency used for this supplier" -msgstr "" +msgstr "Moeda padrão utilizada para este fornecedor" #: company/templates/company/company_base.html:21 #: templates/js/translated/purchase_order.js:242 msgid "Create Purchase Order" -msgstr "" +msgstr "Criar Pedido de compra" #: company/templates/company/company_base.html:27 msgid "Company actions" -msgstr "" +msgstr "Ações da empresa" #: company/templates/company/company_base.html:32 msgid "Edit company information" -msgstr "" +msgstr "Editar Informações da Empresa" #: company/templates/company/company_base.html:33 #: templates/js/translated/company.js:444 msgid "Edit Company" -msgstr "" +msgstr "Editar Empresa" #: company/templates/company/company_base.html:37 msgid "Delete company" -msgstr "" +msgstr "Excluir a empresa" #: company/templates/company/company_base.html:38 #: company/templates/company/company_base.html:162 msgid "Delete Company" -msgstr "" +msgstr "Excluir Empresa" #: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 @@ -4063,27 +4179,27 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:84 #: report/templates/report/inventree_test_report_base.html:163 msgid "Part image" -msgstr "" +msgstr "Imagem da peça" #: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" -msgstr "" +msgstr "Carregar nova imagem" #: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" -msgstr "" +msgstr "Baixar imagem do URL" #: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" -msgstr "" +msgstr "Excluir imagem" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4092,81 +4208,81 @@ msgstr "" #: templates/js/translated/stock.js:2930 #: templates/js/translated/table_filters.js:800 msgid "Customer" -msgstr "" +msgstr "Cliente" #: company/templates/company/company_base.html:111 msgid "Uses default currency" -msgstr "" +msgstr "Usar moeda padrão" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 msgid "Address" -msgstr "" +msgstr "Endereço" #: company/templates/company/company_base.html:125 msgid "Phone" -msgstr "" +msgstr "Telefone" #: company/templates/company/company_base.html:205 #: part/templates/part/part_base.html:528 msgid "Remove Image" -msgstr "" +msgstr "Remover imagem" #: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" -msgstr "" +msgstr "Remover imagem associada desta empresa" #: company/templates/company/company_base.html:208 #: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" -msgstr "" +msgstr "Remover" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "" +msgstr "Enviar Imagem" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "" +msgstr "Baixar Imagem" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 #: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" -msgstr "" +msgstr "Peças do Fornecedor" #: company/templates/company/detail.html:19 msgid "Create new supplier part" -msgstr "" +msgstr "Criar nova peça do fornecedor" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 #: part/templates/part/detail.html:356 msgid "New Supplier Part" -msgstr "" +msgstr "Nova peça do fornecedor" #: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 #: templates/js/translated/search.js:151 msgid "Manufacturer Parts" -msgstr "" +msgstr "Fabricantes de peças" #: company/templates/company/detail.html:45 msgid "Create new manufacturer part" -msgstr "" +msgstr "Criar novo fabricante de peça" #: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" -msgstr "" +msgstr "Nova peça do fabricante" #: company/templates/company/detail.html:65 msgid "Supplier Stock" -msgstr "" +msgstr "Estoque do Fornecedor" #: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 @@ -4180,17 +4296,17 @@ msgstr "" #: templates/js/translated/search.js:205 templates/navbar.html:50 #: users/models.py:195 msgid "Purchase Orders" -msgstr "" +msgstr "Pedidos de compra" #: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" -msgstr "" +msgstr "Criar novo pedido de compra" #: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" -msgstr "" +msgstr "Novo Pedido de Compra" #: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 @@ -4203,21 +4319,21 @@ msgstr "" #: templates/js/translated/search.js:219 templates/navbar.html:62 #: users/models.py:196 msgid "Sales Orders" -msgstr "" +msgstr "Pedidos de vendas" #: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" -msgstr "" +msgstr "Criar novo pedido de venda" #: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" -msgstr "" +msgstr "Novo Pedido de Venda" #: company/templates/company/detail.html:126 msgid "Assigned Stock" -msgstr "" +msgstr "Estoque Atribuído" #: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 @@ -4228,169 +4344,169 @@ msgstr "" #: templates/js/translated/search.js:232 templates/navbar.html:65 #: users/models.py:197 msgid "Return Orders" -msgstr "" +msgstr "Pedidos de Devolução" #: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" -msgstr "" +msgstr "Criar novo pedido de devolução" #: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" -msgstr "" +msgstr "Novo Pedido de Devolução" #: company/templates/company/detail.html:168 msgid "Company Notes" -msgstr "" +msgstr "Notas da Empresa" #: company/templates/company/detail.html:183 msgid "Company Contacts" -msgstr "" +msgstr "Contato da Empresa" #: company/templates/company/detail.html:187 #: company/templates/company/detail.html:188 msgid "Add Contact" -msgstr "" +msgstr "Adicionar Contato" #: company/templates/company/detail.html:206 msgid "Company addresses" -msgstr "" +msgstr "Endereços da empresa" #: company/templates/company/detail.html:210 #: company/templates/company/detail.html:211 msgid "Add Address" -msgstr "" +msgstr "Adicionar endereço" #: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" -msgstr "" +msgstr "Fabricantes" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:227 #: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" -msgstr "" +msgstr "Pedir peça" #: company/templates/company/manufacturer_part.html:39 #: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" -msgstr "" +msgstr "Editar peça do fabricante" #: company/templates/company/manufacturer_part.html:43 #: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" -msgstr "" +msgstr "Excluir peça do fabricante" #: company/templates/company/manufacturer_part.html:65 #: company/templates/company/supplier_part.html:97 msgid "Internal Part" -msgstr "" +msgstr "Peça Interna" #: company/templates/company/manufacturer_part.html:95 msgid "No manufacturer information available" -msgstr "Não existe informação do fabricante" +msgstr "Nenhuma informação do fabricante disponível" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:122 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" -msgstr "" +msgstr "Fornecedores" #: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 #: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" -msgstr "" +msgstr "Parâmetros" #: company/templates/company/manufacturer_part.html:160 #: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" -msgstr "" +msgstr "Novo parâmetro" #: company/templates/company/manufacturer_part.html:206 #: templates/js/translated/part.js:1422 msgid "Add Parameter" -msgstr "" +msgstr "Adicionar Parâmetro" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" -msgstr "" +msgstr "Peças Fabricadas" #: company/templates/company/sidebar.html:10 msgid "Supplied Parts" -msgstr "" +msgstr "Peças fornecidas" #: company/templates/company/sidebar.html:16 msgid "Supplied Stock Items" -msgstr "" +msgstr "Itens fornecidos em estoque" #: company/templates/company/sidebar.html:25 msgid "Assigned Stock Items" -msgstr "" +msgstr "Itens de Estoque atribuídos" #: company/templates/company/sidebar.html:33 msgid "Contacts" -msgstr "" +msgstr "Contatos" #: company/templates/company/sidebar.html:35 msgid "Addresses" -msgstr "" +msgstr "Endereços" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 #: templates/js/translated/stock.js:2250 msgid "Supplier Part" -msgstr "" +msgstr "Fornecedor da Peça" #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1516 msgid "Supplier part actions" -msgstr "" +msgstr "Ações de peças do fornecedor" #: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 #: company/templates/company/supplier_part.html:228 #: part/templates/part/detail.html:110 msgid "Order Part" -msgstr "" +msgstr "Pedir Peça" #: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 msgid "Update Availability" -msgstr "" +msgstr "Atualizar disponibilidade" #: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 #: templates/js/translated/company.js:294 msgid "Edit Supplier Part" -msgstr "" +msgstr "Editar Fornecedor da Peça" #: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 #: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" -msgstr "" +msgstr "Duplicar Peça do Fornecedor" #: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" -msgstr "" +msgstr "Excluir Fornecedor da Peça" #: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" -msgstr "" +msgstr "Excluir Fornecedor da Peça" #: company/templates/company/supplier_part.html:133 msgid "No supplier information available" -msgstr "" +msgstr "Nenhuma informação do fornecedor está disponível" #: company/templates/company/supplier_part.html:139 part/bom.py:279 #: part/bom.py:311 part/serializers.py:461 @@ -4399,53 +4515,53 @@ msgstr "" #: templates/js/translated/purchase_order.js:1847 #: templates/js/translated/purchase_order.js:2025 msgid "SKU" -msgstr "" +msgstr "Código (SKU)" #: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" -msgstr "" +msgstr "Estoque de Peça do Fornecedor" #: company/templates/company/supplier_part.html:209 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" -msgstr "" +msgstr "Criar novo item de estoque" #: company/templates/company/supplier_part.html:210 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 #: templates/js/translated/stock.js:537 msgid "New Stock Item" -msgstr "" +msgstr "Novo item de estoque" #: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" -msgstr "" +msgstr "Pedidos de peças do fornecedor" #: company/templates/company/supplier_part.html:246 msgid "Pricing Information" -msgstr "" +msgstr "Informações de Preço" #: company/templates/company/supplier_part.html:251 #: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" -msgstr "" +msgstr "Adicionar parcela de preço" #: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" -msgstr "" +msgstr "QR Code da Peça do Fornecedor" #: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" -msgstr "" +msgstr "Vincular Código de Barras à Peça do Fornecedor" #: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" -msgstr "" +msgstr "Atualizar Disponibilidade de Peças" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4453,123 +4569,228 @@ msgstr "" #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 #: users/models.py:193 msgid "Stock Items" -msgstr "" +msgstr "Itens de Estoque" #: company/templates/company/supplier_part_sidebar.html:9 msgid "Supplier Part Pricing" -msgstr "" +msgstr "Preço do Fornecedor Peça" #: company/views.py:32 msgid "New Supplier" -msgstr "" +msgstr "Novo Fornecedor" #: company/views.py:38 msgid "New Manufacturer" -msgstr "" +msgstr "Novo Fabricante" #: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" -msgstr "" +msgstr "Clientes" #: company/views.py:44 msgid "New Customer" -msgstr "" +msgstr "Novo Cliente" #: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" -msgstr "" +msgstr "Empresas" #: company/views.py:52 msgid "New Company" +msgstr "Nova Empresa" + +#: label/api.py:247 +msgid "Error printing label" msgstr "" #: label/models.py:115 msgid "Label name" -msgstr "" +msgstr "Nome da etiqueta" #: label/models.py:123 msgid "Label description" -msgstr "" +msgstr "Descrição da etiqueta" #: label/models.py:131 msgid "Label" -msgstr "" +msgstr "Etiqueta" #: label/models.py:132 msgid "Label template file" -msgstr "" +msgstr "Arquivo de modelo de etiqueta" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" -msgstr "" +msgstr "Habilitado" #: label/models.py:139 msgid "Label template is enabled" -msgstr "" +msgstr "Modelo de Etiqueta Habilitado" #: label/models.py:144 msgid "Width [mm]" -msgstr "" +msgstr "Largura [mm]" #: label/models.py:145 msgid "Label width, specified in mm" -msgstr "" +msgstr "Largura da etiqueta, em mm" #: label/models.py:151 msgid "Height [mm]" -msgstr "" +msgstr "Altura [mm]" #: label/models.py:152 msgid "Label height, specified in mm" -msgstr "" +msgstr "Altura da Etiqueta, em mm" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" -msgstr "" +msgstr "Padrão de Nome de Arquivo" #: label/models.py:159 msgid "Pattern for generating label filenames" -msgstr "" +msgstr "Padrão para gerar nomes do arquivo das etiquetas" #: label/models.py:308 label/models.py:347 label/models.py:372 #: label/models.py:407 msgid "Query filters (comma-separated list of key=value pairs)" -msgstr "" +msgstr "Filtros de consulta (lista de valores separados por vírgula)" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" -msgstr "" +msgstr "Filtros" #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 #: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 msgid "QR Code" -msgstr "" +msgstr "Código QR" #: label/templates/label/part/part_label_code128.html:31 #: label/templates/label/stocklocation/qr_and_text.html:31 #: templates/qr_code.html:7 msgid "QR code" +msgstr "Código QR" + +#: machine/machine_types/label_printer.py:213 +msgid "Copies" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "Desconhecido" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 #: templates/js/translated/purchase_order.js:2122 #: templates/js/translated/sales_order.js:1847 msgid "Total Price" -msgstr "" +msgstr "Preço Total" #: order/api.py:233 msgid "No matching purchase order found" -msgstr "" +msgstr "Nenhum pedido de compra correspondente encontrado" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4581,203 +4802,199 @@ msgstr "" #: templates/js/translated/purchase_order.js:1670 #: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" -msgstr "" +msgstr "Pedido de Compra" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 #: templates/js/translated/stock.js:2912 msgid "Return Order" -msgstr "" +msgstr "Devolver pedido" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" -msgstr "" +msgstr "Preço total deste pedido" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" -msgstr "" +msgstr "Moeda do pedido" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" -msgstr "" +msgstr "Moeda para este pedido (deixe em branco para usar o padrão da empresa)" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" -msgstr "" +msgstr "O contato não corresponde à empresa selecionada" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" -msgstr "" +msgstr "Descrição do pedido (opcional)" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" -msgstr "" +msgstr "Selecione o código do projeto para este pedido" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" -msgstr "" +msgstr "Link para página externa" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." -msgstr "" +msgstr "Data esperada para entrega do pedido. O Pedido estará atrasado após esta data." -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" -msgstr "" +msgstr "Criado por" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" -msgstr "" +msgstr "Usuário ou grupo responsável para este pedido" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" -msgstr "" +msgstr "Ponto de contato para este pedido" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" -msgstr "" +msgstr "Endereço da empresa para este pedido" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" -msgstr "" +msgstr "Referência do pedido" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" -msgstr "" +msgstr "Situação do pedido de compra" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" -msgstr "" +msgstr "Empresa da qual os itens estão sendo encomendados" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" -msgstr "" +msgstr "Referencia do fornecedor" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" -msgstr "" +msgstr "Código de referência do pedido fornecedor" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" -msgstr "" +msgstr "recebido por" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" -msgstr "" +msgstr "Data de emissão" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" -msgstr "" +msgstr "Dia que o pedido foi feito" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" -msgstr "" +msgstr "Dia que o pedido foi concluído" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" -msgstr "" +msgstr "Fornecedor de peça deve corresponder a fornecedor da OC" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" -msgstr "" +msgstr "Quantidade deve ser um número positivo" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" -msgstr "" +msgstr "Empresa para qual os itens foi vendidos" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " -msgstr "" +msgstr "Referência do Cliente " -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" -msgstr "" +msgstr "Código de Referência do pedido do cliente" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" -msgstr "" +msgstr "Data de Envio" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" -msgstr "" - -#: order/models.py:977 -msgid "Order cannot be completed as no parts have been assigned" -msgstr "" +msgstr "enviado por" #: order/models.py:982 +msgid "Order cannot be completed as no parts have been assigned" +msgstr "O pedido não pode ser concluído, pois nenhuma parte foi atribuída" + +#: order/models.py:987 msgid "Only an open order can be marked as complete" -msgstr "" +msgstr "Apenas um pedido aberto pode ser marcado como completo" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" -msgstr "" +msgstr "Pedido não pode ser concluído, pois, há envios incompletos" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" -msgstr "" +msgstr "Pedido não pode ser concluído, pois, há itens na linha incompletos" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" -msgstr "" +msgstr "Quantidade do item" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" -msgstr "" +msgstr "Referência do Item em Linha" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" -msgstr "" +msgstr "Observações do Item de Linha" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" -msgstr "" +msgstr "Data alvo para este item de linha (deixe em branco para usar a data alvo do pedido)" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" -msgstr "" +msgstr "Descrição item de linha (opcional)" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" -msgstr "" +msgstr "Contexto" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" -msgstr "" +msgstr "Contexto adicional para esta linha" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" -msgstr "" +msgstr "Preço Unitário" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" -msgstr "" +msgstr "A peça do fornecedor deve corresponder ao fornecedor" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" -msgstr "" +msgstr "excluído" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" -msgstr "" +msgstr "Pedido" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" -msgstr "" +msgstr "Fornecedor da Peça" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4785,379 +5002,379 @@ msgstr "" #: templates/js/translated/table_filters.js:120 #: templates/js/translated/table_filters.js:598 msgid "Received" -msgstr "" +msgstr "Recebido" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" -msgstr "" +msgstr "Número de itens recebidos" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" -msgstr "" +msgstr "Preço de Compra" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" -msgstr "" +msgstr "Preço unitário de compra" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" -msgstr "" - -#: order/models.py:1490 -msgid "Virtual part cannot be assigned to a sales order" -msgstr "" +msgstr "Onde o Comprador quer que este item seja armazenado?" #: order/models.py:1495 -msgid "Only salable parts can be assigned to a sales order" -msgstr "" +msgid "Virtual part cannot be assigned to a sales order" +msgstr "Peça virtual não pode ser atribuída a um pedido de venda" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1500 +msgid "Only salable parts can be assigned to a sales order" +msgstr "Apenas peças vendáveis podem ser atribuídas a um pedido de venda" + +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" -msgstr "" +msgstr "Preço de Venda" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" -msgstr "" +msgstr "Preço de venda unitário" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" -msgstr "" - -#: order/models.py:1614 -msgid "Date of shipment" -msgstr "" - -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 -msgid "Delivery Date" -msgstr "" - -#: order/models.py:1621 -msgid "Date of delivery of shipment" -msgstr "" +msgstr "Quantidade enviada" #: order/models.py:1629 +msgid "Date of shipment" +msgstr "Data do envio" + +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 +msgid "Delivery Date" +msgstr "Data de Entrega" + +#: order/models.py:1636 +msgid "Date of delivery of shipment" +msgstr "Data da entrega do envio" + +#: order/models.py:1644 msgid "Checked By" -msgstr "" +msgstr "Verificado por" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" -msgstr "" +msgstr "Usuário que verificou esta remessa" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" -msgstr "" +msgstr "Remessa" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" -msgstr "" +msgstr "Número do Envio" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" -msgstr "" +msgstr "Número de Rastreamento" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" -msgstr "" +msgstr "Informação de rastreamento da remessa" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" -msgstr "" +msgstr "Número da Fatura" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" -msgstr "" +msgstr "Número de referência para fatura associada" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" -msgstr "" +msgstr "O pedido já foi enviado" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" -msgstr "" +msgstr "Remessa não foi alocada nos itens de estoque" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" -msgstr "" +msgstr "O item do estoque não foi atribuído" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" -msgstr "" +msgstr "Não é possível alocar o item de estoque para uma linha de uma peça diferente" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" -msgstr "" +msgstr "Não é possível alocar uma linha sem uma peça" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" -msgstr "" +msgstr "A quantidade de alocação não pode exceder a quantidade em estoque" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" -msgstr "" +msgstr "Quantidade deve ser 1 para item de estoque serializado" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" -msgstr "" +msgstr "Pedidos de venda não coincidem com a remessa" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" -msgstr "" +msgstr "Remessa não coincide com pedido de venda" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" -msgstr "" +msgstr "Linha" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" -msgstr "" +msgstr "Referência de remessa do pedido de venda" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" -msgstr "" +msgstr "Item" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" -msgstr "" +msgstr "Selecione o item de estoque para alocar" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" -msgstr "" +msgstr "Insira a quantidade de atribuição de estoque" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" -msgstr "" +msgstr "Referência de Pedidos de Devolução" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" -msgstr "" +msgstr "Empresa da qual os itens estão sendo retornados" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" -msgstr "" +msgstr "Estado do pedido de retorno" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" -msgstr "" +msgstr "Somente itens da série podem ser devolvidos" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" -msgstr "" +msgstr "Selecione o item a ser devolvido pelo cliente" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" -msgstr "" +msgstr "Data de Recebimento" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" -msgstr "" +msgstr "Data que o pedido a ser devolvido foi recebido" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" -msgstr "" +msgstr "Despesa/gastos" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" -msgstr "" +msgstr "Gastos com esta linha de itens" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" -msgstr "" +msgstr "Gastos para reparar e/ou devolver esta linha de itens" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" -msgstr "" +msgstr "Pedido não pode ser cancelado" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" -msgstr "" +msgstr "Permitir que o pedido seja fechado com itens de linha incompletos" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" -msgstr "" +msgstr "O pedido tem itens da linha incompletos" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" -msgstr "" +msgstr "O pedido não está aberto" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" -msgstr "" +msgstr "Moeda de preço de compra" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" -msgstr "" +msgstr "A peça do fornecedor deve ser especificada" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" -msgstr "" +msgstr "O pedido de compra deve ser especificado" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" -msgstr "" +msgstr "O fornecedor deve corresponder o pedido de compra" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" -msgstr "" +msgstr "Pedido de compra deve corresponder ao fornecedor" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" -msgstr "" +msgstr "Itens de linha" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" -msgstr "" +msgstr "O item de linha não corresponde ao pedido de compra" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" -msgstr "" +msgstr "Selecione o local de destino para os itens recebidos" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" -msgstr "" +msgstr "Digite o código do lote para itens de estoque recebidos" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" -msgstr "" +msgstr "Digite o número de série para itens de estoque recebidos" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" -msgstr "" +msgstr "Código de barras" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" -msgstr "" +msgstr "Código de barras lido" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" -msgstr "" +msgstr "Código de barras já em uso" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" -msgstr "" +msgstr "Quantidade inteira deve ser fornecida para peças rastreáveis" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" -msgstr "" +msgstr "Itens de linha deve ser providenciados" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" -msgstr "" +msgstr "Loca de destino deve ser especificado" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" -msgstr "" +msgstr "Código de barras fornecido deve ser único" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" -msgstr "" +msgstr "Moeda de preço de venda" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" -msgstr "" +msgstr "Nenhum detalhe da remessa fornecido" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" -msgstr "" +msgstr "Item de linha não está associado a este pedido" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" -msgstr "" +msgstr "Quantidade deve ser positiva" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" -msgstr "" +msgstr "Digite números de série para alocar" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" -msgstr "" +msgstr "O pedido já foi enviado" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" -msgstr "" +msgstr "O envio não está associado a este pedido" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" -msgstr "" +msgstr "Nenhuma correspondência encontrada para os seguintes números de série" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" -msgstr "" +msgstr "Os seguintes números de série já estão alocados" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" -msgstr "" +msgstr "Devolver item do pedido" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" -msgstr "" +msgstr "Item do pedido não bate com o pedido de devolução" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" -msgstr "" +msgstr "Item do pedido já foi recebido" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" -msgstr "" +msgstr "Itens só podem ser recebidos de pedidos em processamento" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" -msgstr "" +msgstr "Tipo de moeda para o item do pedido" #: order/tasks.py:25 msgid "Overdue Purchase Order" -msgstr "" +msgstr "Pedido de compra vencido" #: order/tasks.py:30 #, python-brace-format msgid "Purchase order {po} is now overdue" -msgstr "" +msgstr "Pedido de compra {po} está atrasada" #: order/tasks.py:75 msgid "Overdue Sales Order" -msgstr "" +msgstr "Pedido de venda vencido" #: order/tasks.py:80 #, python-brace-format msgid "Sales order {so} is now overdue" -msgstr "" +msgstr "Pedido de venda {so} está atrasada" #: order/templates/order/order_base.html:51 msgid "Print purchase order report" -msgstr "" +msgstr "Imprimir relatório do pedido de compra" #: order/templates/order/order_base.html:53 #: order/templates/order/return_order_base.html:62 #: order/templates/order/sales_order_base.html:62 msgid "Export order to file" -msgstr "" +msgstr "Exportar pedido ao arquivo" #: order/templates/order/order_base.html:59 #: order/templates/order/return_order_base.html:72 #: order/templates/order/sales_order_base.html:71 msgid "Order actions" -msgstr "" +msgstr "Ações de pedido" #: order/templates/order/order_base.html:64 #: order/templates/order/return_order_base.html:76 #: order/templates/order/sales_order_base.html:75 msgid "Edit order" -msgstr "" +msgstr "Editar pedido" #: order/templates/order/order_base.html:68 #: order/templates/order/return_order_base.html:78 #: order/templates/order/sales_order_base.html:77 msgid "Cancel order" -msgstr "" +msgstr "Cancelar pedido" #: order/templates/order/order_base.html:73 msgid "Duplicate order" -msgstr "" +msgstr "Duplicar pedido" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 @@ -5166,93 +5383,93 @@ msgstr "" #: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 msgid "Issue Order" -msgstr "" +msgstr "Emitir Pedido" #: order/templates/order/order_base.html:83 #: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" -msgstr "" +msgstr "Marcar pedido como concluído" #: order/templates/order/order_base.html:84 #: order/templates/order/return_order_base.html:87 #: order/templates/order/sales_order_base.html:93 msgid "Complete Order" -msgstr "" +msgstr "Completar Pedido" #: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" -msgstr "" +msgstr "Miniatura da peça do fornecedor" #: order/templates/order/order_base.html:106 #: order/templates/order/return_order_base.html:101 #: order/templates/order/sales_order_base.html:106 msgid "Order Reference" -msgstr "" +msgstr "Referência do Pedido" #: order/templates/order/order_base.html:111 #: order/templates/order/return_order_base.html:106 #: order/templates/order/sales_order_base.html:111 msgid "Order Description" -msgstr "" +msgstr "Descrição do Pedido" #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:118 msgid "Order Status" -msgstr "" +msgstr "Situação do pedido" #: order/templates/order/order_base.html:141 msgid "No suppplier information available" -msgstr "" +msgstr "Nenhuma informação do fornecedor disponível" #: order/templates/order/order_base.html:154 #: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" -msgstr "" +msgstr "Itens de Linha Concluídos" #: order/templates/order/order_base.html:160 #: order/templates/order/sales_order_base.html:163 #: order/templates/order/sales_order_base.html:173 msgid "Incomplete" -msgstr "" +msgstr "Incompleto" #: order/templates/order/order_base.html:179 #: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" -msgstr "" +msgstr "Emitido" #: order/templates/order/order_base.html:224 msgid "Total cost" -msgstr "" +msgstr "Custo total" #: order/templates/order/order_base.html:228 #: order/templates/order/return_order_base.html:199 #: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" -msgstr "" +msgstr "O custo total não pôde ser calculado" #: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" -msgstr "" +msgstr "Código QR do Pedido de Compra" #: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" -msgstr "" +msgstr "Vincular o Código de Barras ao Pedido de Compra" #: order/templates/order/order_wizard/match_fields.html:9 #: part/templates/part/import_wizard/ajax_match_fields.html:9 #: part/templates/part/import_wizard/match_fields.html:9 #: templates/patterns/wizard/match_fields.html:8 msgid "Missing selections for the following required columns" -msgstr "" +msgstr "Seleções ausentes para as seguintes colunas necessárias" #: order/templates/order/order_wizard/match_fields.html:20 #: part/templates/part/import_wizard/ajax_match_fields.html:20 #: part/templates/part/import_wizard/match_fields.html:20 #: templates/patterns/wizard/match_fields.html:19 msgid "Duplicate selections found, see below. Fix them then retry submitting." -msgstr "" +msgstr "Seleções duplicadas encontradas, veja abaixo. Corrija-as e tente enviar novamente." #: order/templates/order/order_wizard/match_fields.html:29 #: order/templates/order/order_wizard/match_parts.html:21 @@ -5260,28 +5477,28 @@ msgstr "" #: part/templates/part/import_wizard/match_references.html:21 #: templates/patterns/wizard/match_fields.html:28 msgid "Submit Selections" -msgstr "" +msgstr "Enviar Seleções" #: order/templates/order/order_wizard/match_fields.html:35 #: part/templates/part/import_wizard/ajax_match_fields.html:28 #: part/templates/part/import_wizard/match_fields.html:35 #: templates/patterns/wizard/match_fields.html:34 msgid "File Fields" -msgstr "" +msgstr "Campos de arquivo" #: order/templates/order/order_wizard/match_fields.html:42 #: part/templates/part/import_wizard/ajax_match_fields.html:35 #: part/templates/part/import_wizard/match_fields.html:42 #: templates/patterns/wizard/match_fields.html:41 msgid "Remove column" -msgstr "" +msgstr "Remover coluna" #: order/templates/order/order_wizard/match_fields.html:60 #: part/templates/part/import_wizard/ajax_match_fields.html:53 #: part/templates/part/import_wizard/match_fields.html:60 #: templates/patterns/wizard/match_fields.html:59 msgid "Duplicate selection" -msgstr "" +msgstr "Duplicar seleção" #: order/templates/order/order_wizard/match_fields.html:71 #: order/templates/order/order_wizard/match_parts.html:52 @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5298,35 +5515,35 @@ msgstr "" #: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" -msgstr "" +msgstr "Remover linha" #: order/templates/order/order_wizard/match_parts.html:12 #: part/templates/part/import_wizard/ajax_match_references.html:12 #: part/templates/part/import_wizard/match_references.html:12 msgid "Errors exist in the submitted data" -msgstr "" +msgstr "Há erros nos dados enviados" #: order/templates/order/order_wizard/match_parts.html:28 #: part/templates/part/import_wizard/ajax_match_references.html:21 #: part/templates/part/import_wizard/match_references.html:28 msgid "Row" -msgstr "" +msgstr "Linha" #: order/templates/order/order_wizard/match_parts.html:29 msgid "Select Supplier Part" -msgstr "" +msgstr "Selecionar Fornecedor da Peça" #: order/templates/order/order_wizard/po_upload.html:8 msgid "Return to Orders" -msgstr "" +msgstr "Retornar para Pedidos" #: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" -msgstr "" +msgstr "Carregar Arquivo para o Pedido de Compra" #: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." -msgstr "" +msgstr "O pedido já está processado. Arquivos não podem ser enviados." #: order/templates/order/order_wizard/po_upload.html:27 #: part/templates/part/import_wizard/ajax_part_upload.html:10 @@ -5334,7 +5551,7 @@ msgstr "" #: templates/patterns/wizard/upload.html:13 #, python-format msgid "Step %(step)s of %(count)s" -msgstr "" +msgstr "Passo %(step)s de %(count)s" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/return_order_detail.html:18 @@ -5343,15 +5560,15 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:19 #: report/templates/report/inventree_so_report_base.html:22 msgid "Line Items" -msgstr "" +msgstr "Itens de linha" #: order/templates/order/po_sidebar.html:7 msgid "Received Stock" -msgstr "" +msgstr "Estoque Recebido" #: order/templates/order/purchase_order_detail.html:18 msgid "Purchase Order Items" -msgstr "" +msgstr "Itens do Pedido de Compra" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 @@ -5360,57 +5577,57 @@ msgstr "" #: templates/js/translated/return_order.js:459 #: templates/js/translated/sales_order.js:237 msgid "Add Line Item" -msgstr "" +msgstr "Adicionar item de linha" #: order/templates/order/purchase_order_detail.html:31 #: order/templates/order/purchase_order_detail.html:32 #: order/templates/order/return_order_detail.html:28 #: order/templates/order/return_order_detail.html:29 msgid "Receive Line Items" -msgstr "" +msgstr "Receber os itens do pedido" #: order/templates/order/purchase_order_detail.html:50 #: order/templates/order/return_order_detail.html:45 #: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" -msgstr "" +msgstr "Linhas Extra" #: order/templates/order/purchase_order_detail.html:56 #: order/templates/order/return_order_detail.html:51 #: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" -msgstr "" +msgstr "Adicionar Linha Extra" #: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" -msgstr "" +msgstr "Itens Recebidos" #: order/templates/order/purchase_order_detail.html:99 #: order/templates/order/return_order_detail.html:85 #: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" -msgstr "" +msgstr "Notas do Pedido" #: order/templates/order/return_order_base.html:18 #: order/templates/order/sales_order_base.html:18 msgid "Customer logo thumbnail" -msgstr "" +msgstr "Miniatura logotipo do cliente" #: order/templates/order/return_order_base.html:60 msgid "Print return order report" -msgstr "" +msgstr "Imprimir guia de devolução" #: order/templates/order/return_order_base.html:64 #: order/templates/order/sales_order_base.html:64 msgid "Print packing list" -msgstr "" +msgstr "Imprimir lista de pacotes" #: order/templates/order/return_order_base.html:138 #: order/templates/order/sales_order_base.html:151 #: templates/js/translated/return_order.js:309 #: templates/js/translated/sales_order.js:797 msgid "Customer Reference" -msgstr "" +msgstr "Referência do Cliente" #: order/templates/order/return_order_base.html:195 #: order/templates/order/sales_order_base.html:235 @@ -5423,198 +5640,191 @@ msgstr "" #: templates/js/translated/return_order.js:381 #: templates/js/translated/sales_order.js:855 msgid "Total Cost" -msgstr "" +msgstr "Custo Total" #: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" -msgstr "" +msgstr "Código QR do Pedido de Devolução" #: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" -msgstr "" +msgstr "Vincular Código de Barras a Pedido de Devolução" #: order/templates/order/return_order_sidebar.html:5 msgid "Order Details" -msgstr "" +msgstr "Detalhes do pedido" #: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" -msgstr "" +msgstr "Imprimir Relatório do Pedido de Venda" #: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 msgid "Ship Items" -msgstr "" +msgstr "Enviar itens" #: order/templates/order/sales_order_base.html:92 #: templates/js/translated/sales_order.js:484 msgid "Complete Sales Order" -msgstr "" +msgstr "Concluir Pedido de Venda" #: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" -msgstr "" +msgstr "Este Pedido de Venda não foi totalmente alocado" #: order/templates/order/sales_order_base.html:169 #: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" -msgstr "" +msgstr "Envios concluídos" #: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" -msgstr "" +msgstr "Código QR do Pedido de Venda" #: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" -msgstr "" +msgstr "Vincular Código de Barras ao Pedido de Venda" #: order/templates/order/sales_order_detail.html:18 msgid "Sales Order Items" -msgstr "" +msgstr "Itens do Pedido de Venda" #: order/templates/order/sales_order_detail.html:67 #: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" -msgstr "" +msgstr "Envios Pendentes" #: order/templates/order/sales_order_detail.html:71 #: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" -msgstr "" +msgstr "Ações" #: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" -msgstr "" +msgstr "Nova Remessa" #: order/views.py:120 msgid "Match Supplier Parts" -msgstr "" +msgstr "Corresponder Peças com Fornecedor" #: order/views.py:406 msgid "Sales order not found" -msgstr "" +msgstr "Pedido de Venda não encontrado" #: order/views.py:412 msgid "Price not found" -msgstr "" +msgstr "Preço não encontrado" #: order/views.py:415 #, python-brace-format msgid "Updated {part} unit-price to {price}" -msgstr "" +msgstr "Atualizado {part} unid.-preço para {price}" #: order/views.py:421 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" -msgstr "" +msgstr "Atualizado {part} unid.-preço para {price} e quantidade para {qty}" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" -msgstr "" +msgstr "ID da Peça" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" -msgstr "" +msgstr "Nome da Peça" #: part/admin.py:45 part/stocktake.py:220 msgid "Part Description" -msgstr "" +msgstr "Descrição da Peça" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" -msgstr "" +msgstr "IPN" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" -msgstr "" +msgstr "Revisão" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" -msgstr "" +msgstr "Palavras chave" #: part/admin.py:60 msgid "Part Image" -msgstr "" +msgstr "Imagem da Peça" #: part/admin.py:63 part/admin.py:300 part/stocktake.py:221 msgid "Category ID" -msgstr "" +msgstr "ID da Categoria" #: part/admin.py:67 part/admin.py:302 part/stocktake.py:222 msgid "Category Name" -msgstr "" +msgstr "Nome da Categoria" #: part/admin.py:71 part/admin.py:314 msgid "Default Location ID" -msgstr "" +msgstr "ID Local Padrão" #: part/admin.py:76 msgid "Default Supplier ID" -msgstr "" +msgstr "ID de Fornecedor Padrão" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" -msgstr "" +msgstr "Variante de" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" -msgstr "" +msgstr "Estoque Mínimo" #: part/admin.py:126 part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1679 #: templates/js/translated/table_filters.js:355 msgid "In Stock" -msgstr "" - -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" +msgstr "Em Estoque" #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" -msgstr "" +msgstr "Usado em" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" -msgstr "" +msgstr "Produzindo" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" -msgstr "" +msgstr "Custo Mínimo" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" -msgstr "" +msgstr "Custo Máximo" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" -msgstr "" +msgstr "ID Paternal" #: part/admin.py:310 part/admin.py:399 stock/admin.py:62 msgid "Parent Name" -msgstr "" +msgstr "Nome Paternal" #: part/admin.py:318 part/templates/part/category.html:88 #: part/templates/part/category.html:101 msgid "Category Path" -msgstr "" +msgstr "Caminho da Categoria" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5623,447 +5833,442 @@ msgstr "" #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:190 msgid "Parts" -msgstr "" +msgstr "Peças" #: part/admin.py:383 msgid "BOM Level" -msgstr "" +msgstr "Nível da LDM" #: part/admin.py:386 msgid "BOM Item ID" -msgstr "" +msgstr "ID Item LDM" #: part/admin.py:396 msgid "Parent IPN" -msgstr "" +msgstr "IPN Paternal" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" -msgstr "" +msgstr "IPN da Peça" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" -msgstr "" +msgstr "Preço Mínimo" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" -msgstr "" +msgstr "Preço Máximo" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" -msgstr "" +msgstr "Pedido de compra recebido" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" -msgstr "" +msgstr "Pedidos de Venda Feitos" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" -msgstr "" +msgstr "Estoque produzido pelo Pedido de Produção" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" -msgstr "" +msgstr "Estoque obrigatório para Pedido de Produção" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" -msgstr "" +msgstr "Válido" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" -msgstr "" +msgstr "Validar a Lista de Materiais completa" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" -msgstr "" +msgstr "Esta opção deve ser selecionada" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" -msgstr "" +msgstr "Local Padrão" #: part/bom.py:171 templates/email/low_stock_notification.html:16 msgid "Total Stock" -msgstr "" - -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" +msgstr "Estoque Total" #: part/forms.py:49 msgid "Input quantity for price calculation" -msgstr "" +msgstr "Quantidade para o cálculo de preço" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" -msgstr "" +msgstr "Categoria da Peça" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" -msgstr "" +msgstr "Categorias de Peça" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" -msgstr "" +msgstr "Local padrão para peças desta categoria" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" -msgstr "" +msgstr "Estrutural" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." -msgstr "" +msgstr "Peças não podem ser diretamente atribuídas a uma categoria estrutural, mas podem ser atribuídas a categorias filhas." -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" -msgstr "" +msgstr "Palavras-chave Padrão" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" -msgstr "" +msgstr "Palavras-chave padrão para peças nesta categoria" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" -msgstr "" +msgstr "Ícone" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" -msgstr "" +msgstr "Ícone (opcional)" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" -msgstr "" +msgstr "Você não pode tornar esta categoria em estrutural, pois, algumas partes já estão alocadas!" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" -msgstr "" +msgstr "Escolha inválida para peça parental" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" -msgstr "" +msgstr "Peça '{self}' não pode ser utilizada na BOM para '{parent}' (recursiva)" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" -msgstr "" +msgstr "Peça '{parent}' é usada na BOM para '{self}' (recursiva)" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" -msgstr "" +msgstr "IPN deve corresponder ao padrão regex {pattern}" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" -msgstr "" +msgstr "Item em estoque com este número de série já existe" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" -msgstr "" +msgstr "Não é permitido duplicar IPN em configurações de partes" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." -msgstr "" +msgstr "Uma parte com este Nome, IPN e Revisão já existe." -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" -msgstr "" +msgstr "Peças não podem ser atribuídas a categorias estruturais!" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" -msgstr "" +msgstr "Nome da peça" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" -msgstr "" +msgstr "É um modelo" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" -msgstr "" +msgstr "Esta peça é uma peça modelo?" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" -msgstr "" +msgstr "Esta peça é variante de outra peça?" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" -msgstr "" +msgstr "Descrição da peça (opcional)" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" -msgstr "" +msgstr "Palavras-chave para melhorar a visibilidade nos resultados da pesquisa" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" -msgstr "" +msgstr "Categoria" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" -msgstr "" +msgstr "Categoria da Peça" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" -msgstr "" +msgstr "Numero interno do produto" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" -msgstr "" +msgstr "Revisão de peça ou número de versão" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" -msgstr "" +msgstr "Onde este item é armazenado normalmente?" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" -msgstr "" +msgstr "Fornecedor Padrão" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" -msgstr "" +msgstr "Fornecedor padrão da peça" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" -msgstr "" +msgstr "Validade Padrão" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" -msgstr "" +msgstr "Validade (em dias) para itens do estoque desta peça" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" -msgstr "" +msgstr "Nível mínimo de estoque permitido" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" -msgstr "" - -#: part/models.py:1000 -msgid "Can this part be built from other parts?" -msgstr "" - -#: part/models.py:1006 -msgid "Can this part be used to build other parts?" -msgstr "" +msgstr "Unidade de medida para esta peça" #: part/models.py:1012 -msgid "Does this part have tracking for unique items?" -msgstr "Esta peça tem rastreamento para itens únicos?" +msgid "Can this part be built from other parts?" +msgstr "Essa peça pode ser construída a partir de outras peças?" #: part/models.py:1018 -msgid "Can this part be purchased from external suppliers?" -msgstr "" +msgid "Can this part be used to build other parts?" +msgstr "Essa peça pode ser usada para construir outras peças?" #: part/models.py:1024 +msgid "Does this part have tracking for unique items?" +msgstr "Esta parte tem rastreamento para itens únicos?" + +#: part/models.py:1030 +msgid "Can this part be purchased from external suppliers?" +msgstr "Esta peça pode ser comprada de fornecedores externos?" + +#: part/models.py:1036 msgid "Can this part be sold to customers?" -msgstr "" - -#: part/models.py:1028 -msgid "Is this part active?" -msgstr "" - -#: part/models.py:1034 -msgid "Is this a virtual part, such as a software product or license?" -msgstr "" +msgstr "Esta peça pode ser vendida a clientes?" #: part/models.py:1040 +msgid "Is this part active?" +msgstr "Esta parte está ativa?" + +#: part/models.py:1046 +msgid "Is this a virtual part, such as a software product or license?" +msgstr "Esta é uma peça virtual, como um software de produto ou licença?" + +#: part/models.py:1052 msgid "BOM checksum" -msgstr "" +msgstr "Soma de Verificação da LDM" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" -msgstr "" +msgstr "Soma de verificação da LDM armazenada" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" -msgstr "" +msgstr "LDM conferida por" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" -msgstr "" +msgstr "LDM verificada no dia" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" -msgstr "" +msgstr "Criação de Usuário" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" -msgstr "" +msgstr "Proprietário responsável por esta peça" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" -msgstr "" +msgstr "Último Balanço" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" -msgstr "" +msgstr "Venda múltipla" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" -msgstr "" +msgstr "Moeda usada para armazenar os cálculos de preços" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" -msgstr "" +msgstr "Custo Mínimo da LDM" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" -msgstr "" +msgstr "Custo mínimo das peças componentes" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" -msgstr "" +msgstr "Custo Máximo da LDM" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" -msgstr "" +msgstr "Custo máximo das peças componentes" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" -msgstr "" +msgstr "Custo Mínimo de Compra" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" -msgstr "" +msgstr "Custo mínimo histórico de compra" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" -msgstr "" +msgstr "Custo Máximo de Compra" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" -msgstr "" +msgstr "Custo máximo histórico de compra" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" -msgstr "" +msgstr "Preço Interno Mínimo" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" -msgstr "" +msgstr "Custo mínimo baseado nos intervalos de preço internos" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" -msgstr "" +msgstr "Preço Interno Máximo" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" -msgstr "" +msgstr "Custo máximo baseado nos intervalos de preço internos" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" -msgstr "" +msgstr "Preço Mínimo do Fornecedor" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" -msgstr "" +msgstr "Preço mínimo da peça de fornecedores externos" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" -msgstr "" +msgstr "Preço Máximo do Fornecedor" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" -msgstr "" +msgstr "Preço máximo da peça de fornecedores externos" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" -msgstr "" +msgstr "Custo Mínimo variável" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" -msgstr "" +msgstr "Custo mínimo calculado das peças variáveis" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" -msgstr "" +msgstr "Custo Máximo Variável" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" -msgstr "" +msgstr "Custo máximo calculado das peças variáveis" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" -msgstr "" +msgstr "Sobrepor o custo mínimo" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" -msgstr "" +msgstr "Sobrepor o custo máximo" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" -msgstr "" +msgstr "Custo total mínimo calculado" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" -msgstr "" +msgstr "Custo total máximo calculado" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" -msgstr "" +msgstr "Preço Mínimo de Venda" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" -msgstr "" +msgstr "Preço mínimo de venda baseado nos intervalos de preço" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" -msgstr "" +msgstr "Preço Máximo de Venda" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" -msgstr "" +msgstr "Preço máximo de venda baseado nos intervalos de preço" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" -msgstr "" +msgstr "Custo Mínimo de Venda" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" -msgstr "" +msgstr "Preço histórico mínimo de venda" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" -msgstr "" +msgstr "Custo Máximo de Venda" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" -msgstr "" +msgstr "Preço histórico máximo de venda" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" -msgstr "" +msgstr "Peça para Balanço" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" -msgstr "" +msgstr "Total de Itens" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" -msgstr "" +msgstr "Número de entradas de estoques individuais no momento do balanço" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" -msgstr "" +msgstr "Estoque total disponível no momento do balanço" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6073,1002 +6278,998 @@ msgstr "" #: templates/js/translated/purchase_order.js:1728 #: templates/js/translated/stock.js:2792 msgid "Date" -msgstr "" +msgstr "Data" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" -msgstr "" +msgstr "Data de realização do balanço" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" -msgstr "" +msgstr "Notas adicionais" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" -msgstr "" +msgstr "Usuário que fez o balanço" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" -msgstr "" +msgstr "Custo Mínimo de Estoque" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" -msgstr "" +msgstr "Custo mínimo estimado de estoque disponível" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" -msgstr "" +msgstr "Custo Máximo de Estoque" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" -msgstr "" +msgstr "Custo máximo estimado de estoque disponível" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" -msgstr "" +msgstr "Reportar" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" -msgstr "" +msgstr "Arquivo de Relatório de Balanço (gerado internamente)" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" -msgstr "" +msgstr "Contagem de Peças" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" -msgstr "" +msgstr "Número de peças cobertas pelo Balanço" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" -msgstr "" +msgstr "Usuário que solicitou este relatório de balanço" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" -msgstr "" +msgstr "Modelos de teste só podem ser criados para peças rastreáveis" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" -msgstr "" +msgstr "O teste com este nome já existe para esta peça" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" -msgstr "" +msgstr "Nome de Teste" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" -msgstr "" +msgstr "Insira um nome para o teste" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" -msgstr "" - -#: part/models.py:3453 -msgid "Enter description for this test" -msgstr "" - -#: part/models.py:3458 templates/js/translated/part.js:2877 -#: templates/js/translated/table_filters.js:477 -msgid "Required" -msgstr "" - -#: part/models.py:3459 -msgid "Is this test required to pass?" -msgstr "" - -#: part/models.py:3464 templates/js/translated/part.js:2885 -msgid "Requires Value" -msgstr "" +msgstr "Descrição do Teste" #: part/models.py:3465 +msgid "Enter description for this test" +msgstr "Digite a descrição para este teste" + +#: part/models.py:3470 templates/js/translated/part.js:2877 +#: templates/js/translated/table_filters.js:477 +msgid "Required" +msgstr "Requerido" + +#: part/models.py:3471 +msgid "Is this test required to pass?" +msgstr "Este teste é obrigatório passar?" + +#: part/models.py:3476 templates/js/translated/part.js:2885 +msgid "Requires Value" +msgstr "Requer Valor" + +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" -msgstr "" +msgstr "Este teste requer um valor ao adicionar um resultado de teste?" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" -msgstr "" +msgstr "Anexo obrigatório" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" -msgstr "" +msgstr "Este teste requer um anexo ao adicionar um resultado de teste?" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" -msgstr "" +msgstr "Parâmetros da caixa de seleção não podem ter unidades" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" -msgstr "" +msgstr "Os parâmetros da caixa de seleção não podem ter escolhas" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" -msgstr "" +msgstr "Escolhas devem ser únicas" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" -msgstr "" +msgstr "Nome do modelo de parâmetro deve ser único" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" -msgstr "" +msgstr "Nome do Parâmetro" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" -msgstr "" +msgstr "Unidades físicas para este parâmetro" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" -msgstr "" +msgstr "Descrição do Parâmetro" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" -msgstr "" +msgstr "Caixa de seleção" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" -msgstr "" +msgstr "Este parâmetro é uma caixa de seleção?" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" -msgstr "" +msgstr "Escolhas" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" -msgstr "" +msgstr "Opções válidas para este parâmetro (separadas por vírgulas)" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" -msgstr "" +msgstr "Escolha inválida para valor do parâmetro" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" -msgstr "" +msgstr "Peça Paternal" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" -msgstr "" +msgstr "Modelo de parâmetro" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" -msgstr "" +msgstr "Dados" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" -msgstr "" +msgstr "Valor do Parâmetro" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" -msgstr "" +msgstr "Valor Padrão" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" -msgstr "" +msgstr "Valor Padrão do Parâmetro" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" -msgstr "" +msgstr "ID da peça ou nome da peça" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" -msgstr "" +msgstr "Valor exclusivo do ID de peça" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" -msgstr "" +msgstr "Valor da parte IPN" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" -msgstr "" +msgstr "Nível" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" -msgstr "" +msgstr "Nível da LDM" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" -msgstr "" +msgstr "Selecione a Peça Parental" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" -msgstr "" +msgstr "Sub peça" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" -msgstr "" +msgstr "Selecionar peça a ser usada na LDM" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" -msgstr "" +msgstr "Quantidade de LDM para este item LDM" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" -msgstr "" +msgstr "Este item LDM é opcional" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" -msgstr "" +msgstr "Este item LDM é consumível (não é rastreado nos pedidos de construção)" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" -msgstr "" +msgstr "Excedente" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" -msgstr "" +msgstr "Quantidade estimada de desperdício (absoluto ou porcentagem)" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" -msgstr "" +msgstr "Referência do Item LDM" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" -msgstr "" +msgstr "Notas do Item LDM" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" -msgstr "" +msgstr "Soma de verificação" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" -msgstr "" +msgstr "Soma de Verificação da LDM da linha" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" -msgstr "" +msgstr "Validado" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" -msgstr "" +msgstr "O item da LDM foi validado" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" -msgstr "" +msgstr "Obtém herdados" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" -msgstr "" +msgstr "Este item da LDM é herdado por LDMs para peças variáveis" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" -msgstr "" +msgstr "Permitir variações" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" -msgstr "" +msgstr "Itens de estoque para as peças das variantes podem ser usados para este item LDM" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" -msgstr "" +msgstr "Quantidade deve ser valor inteiro para peças rastreáveis" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" -msgstr "" +msgstr "Sub peça deve ser especificada" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" -msgstr "" +msgstr "Substituir Item da LDM" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" -msgstr "" +msgstr "A peça de substituição não pode ser a mesma que a peça mestre" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" -msgstr "" - -#: part/models.py:4305 -msgid "Substitute part" -msgstr "" +msgstr "Item LDM Parental" #: part/models.py:4321 +msgid "Substitute part" +msgstr "Substituir peça" + +#: part/models.py:4337 msgid "Part 1" -msgstr "" +msgstr "Parte 1" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" -msgstr "" +msgstr "Parte 2" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" -msgstr "" +msgstr "Selecionar Peça Relacionada" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" -msgstr "" +msgstr "Relacionamento da peça não pode ser criada com ela mesma" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" -msgstr "" +msgstr "Relação duplicada já existe" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" -msgstr "" +msgstr "Moeda de compra deste item de estoque" #: part/serializers.py:349 msgid "No parts selected" -msgstr "" +msgstr "Nenhuma parte selecionada" #: part/serializers.py:359 msgid "Select category" -msgstr "" +msgstr "Selecionar categoria" #: part/serializers.py:389 msgid "Original Part" -msgstr "" +msgstr "Peça Original" #: part/serializers.py:390 msgid "Select original part to duplicate" -msgstr "" +msgstr "Selecione a peça original para duplicar" #: part/serializers.py:395 msgid "Copy Image" -msgstr "" +msgstr "Copiar imagem" #: part/serializers.py:396 msgid "Copy image from original part" -msgstr "" +msgstr "Copiar imagem da peça original" #: part/serializers.py:402 part/templates/part/detail.html:277 msgid "Copy BOM" -msgstr "" +msgstr "Copiar LDM" #: part/serializers.py:403 msgid "Copy bill of materials from original part" -msgstr "" +msgstr "Copiar lista de materiais da peça original" #: part/serializers.py:409 msgid "Copy Parameters" -msgstr "" +msgstr "Copiar Parâmetros" #: part/serializers.py:410 msgid "Copy parameter data from original part" -msgstr "" +msgstr "Copiar dados do parâmetro da peça original" #: part/serializers.py:416 msgid "Copy Notes" -msgstr "" +msgstr "Copiar Notas" #: part/serializers.py:417 msgid "Copy notes from original part" -msgstr "" +msgstr "Copiar imagem da peça original" #: part/serializers.py:430 msgid "Initial Stock Quantity" -msgstr "" +msgstr "Quantidade Inicial de Estoque" #: part/serializers.py:432 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" +msgstr "Especificar a quantidade inicial de estoque para a peça. Se for zero, nenhum estoque é adicionado." #: part/serializers.py:439 msgid "Initial Stock Location" -msgstr "" +msgstr "Local Inicial do Estoque" #: part/serializers.py:440 msgid "Specify initial stock location for this Part" -msgstr "" +msgstr "Especifique o local do estoque inicial para esta Peça" #: part/serializers.py:452 msgid "Select supplier (or leave blank to skip)" -msgstr "" +msgstr "Selecione o fornecedor (ou deixe em branco para pular)" #: part/serializers.py:468 msgid "Select manufacturer (or leave blank to skip)" -msgstr "" +msgstr "Selecione fabricante (ou deixe em branco para pular)" #: part/serializers.py:478 msgid "Manufacturer part number" -msgstr "" +msgstr "Número de Peça do Fabricante" #: part/serializers.py:485 msgid "Selected company is not a valid supplier" -msgstr "" +msgstr "A empresa selecionada não é um fornecedor válido" #: part/serializers.py:494 msgid "Selected company is not a valid manufacturer" -msgstr "" +msgstr "A empresa selecionada não é um fabricante válido" #: part/serializers.py:505 msgid "Manufacturer part matching this MPN already exists" -msgstr "" +msgstr "A peça do fabricante que corresponde a essa MPN já existe" #: part/serializers.py:512 msgid "Supplier part matching this SKU already exists" -msgstr "" +msgstr "A peça do fornecedor que corresponde a essa SKU já existe" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" -msgstr "" +msgstr "Peça duplicada" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" -msgstr "" +msgstr "Copiar dados iniciais de outra peça" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" -msgstr "" +msgstr "Estoque inicial" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" -msgstr "" +msgstr "Criar peça com a quantidade inicial de estoque" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" -msgstr "" - -#: part/serializers.py:792 -msgid "Add initial supplier information for this part" -msgstr "" +msgstr "Informações do Fornecedor" #: part/serializers.py:800 +msgid "Add initial supplier information for this part" +msgstr "Adicionar informação inicial de fornecedor para esta peça" + +#: part/serializers.py:808 msgid "Copy Category Parameters" -msgstr "" +msgstr "Copiar Parâmetros da Categoria" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" -msgstr "" +msgstr "Copiar modelos de parâmetros a partir de categoria de peça selecionada" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" -msgstr "" +msgstr "Imagem Existente" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" -msgstr "" +msgstr "Nome de arquivo de uma imagem de peça existente" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" -msgstr "" +msgstr "A imagem não existe" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" -msgstr "" +msgstr "Limitar o relatório de balanço a uma determinada peça e quaisquer peças variantes" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" -msgstr "" +msgstr "Limitar o relatório de balanço a uma determinada categoria, e qualquer peças filhas" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" -msgstr "" +msgstr "Limitar o relatório de balanço a um determinado local de estoque, e qualquer local filho" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" -msgstr "" +msgstr "Excluir Estoque externo" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" -msgstr "" +msgstr "Excluir itens de estoque em locais externos" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" -msgstr "" +msgstr "Gerar relatório" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" -msgstr "" +msgstr "Gerar arquivo de relatório contendo dados de estoque calculados" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" -msgstr "" - -#: part/serializers.py:1069 -msgid "Update specified parts with calculated stocktake data" -msgstr "" +msgstr "Atualizar Peças" #: part/serializers.py:1077 +msgid "Update specified parts with calculated stocktake data" +msgstr "Atualizar peças especificadas com dados de estoque calculados" + +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" -msgstr "" +msgstr "Função de Balanço de Estoque não está ativada" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" -msgstr "" - -#: part/serializers.py:1190 -msgid "Minimum price currency" -msgstr "" +msgstr "Sobrepor valor calculado para preço mínimo" #: part/serializers.py:1198 +msgid "Minimum price currency" +msgstr "Moeda do preço mínimo" + +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" -msgstr "" +msgstr "Sobrepor valor calculado para preço máximo" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" -msgstr "" +msgstr "Moeda do preço máximo" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" -msgstr "" +msgstr "Atualizar" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" -msgstr "" +msgstr "Atualizar preços desta peça" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" -msgstr "" +msgstr "Não foi possível converter das moedas fornecidas para {default_currency}" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" -msgstr "" +msgstr "Preço mínimo não pode ser maior que o preço máximo" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" -msgstr "" +msgstr "Preço máximo não pode ser menor que o preço mínimo" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" -msgstr "" +msgstr "Selecionar peça para copiar a LDM" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" -msgstr "" +msgstr "Remover Dado Existente" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" -msgstr "" +msgstr "Remova itens LDM existentes antes de copiar" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" -msgstr "" +msgstr "Incluir Herdados" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" -msgstr "" +msgstr "Incluir itens LDM que são herdados de peças modelo" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" -msgstr "" +msgstr "Pular Linhas inválidas" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" -msgstr "" +msgstr "Habilitar esta opção para pular linhas inválidas" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" -msgstr "" +msgstr "Copiar Peças Substitutas" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" -msgstr "" +msgstr "Copiar peças de substitutas quando duplicar itens de LDM" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" -msgstr "" +msgstr "Limpar LDM Existente" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" -msgstr "" +msgstr "Apagar itens LDM existentes antes de carregar" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" -msgstr "" +msgstr "Nenhuma coluna de peça especificada" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" -msgstr "" +msgstr "Múltiplas peças correspondentes encontradas" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" -msgstr "" +msgstr "Nenhuma peça correspondente encontrada" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" -msgstr "" +msgstr "Peça não está designada como componente" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" -msgstr "" +msgstr "Quantidade não foi fornecida" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" -msgstr "" +msgstr "Quantidade Inválida" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" -msgstr "" +msgstr "Pelo menos um item LDM é necessário" #: part/stocktake.py:224 templates/js/translated/part.js:1066 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:2081 msgid "Total Quantity" -msgstr "" +msgstr "Quantidade Total" #: part/stocktake.py:225 msgid "Total Cost Min" -msgstr "" +msgstr "Custo Min Total" #: part/stocktake.py:226 msgid "Total Cost Max" -msgstr "" +msgstr "Custo Max Total" #: part/stocktake.py:284 msgid "Stocktake Report Available" -msgstr "" +msgstr "Balanço de Estoque Disponível" #: part/stocktake.py:285 msgid "A new stocktake report is available for download" -msgstr "" +msgstr "Um novo relatório de balanço do estoque está disponível para baixar" #: part/tasks.py:37 msgid "Low stock notification" -msgstr "" +msgstr "Notificação de estoque baixo" #: part/tasks.py:39 #, python-brace-format msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" +msgstr "O estoque disponível para {part.name} caiu abaixo do nível mínimo definido" #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." -msgstr "" +msgstr "Você não tem permissões para editar a LDM." #: part/templates/part/bom.html:15 msgid "The BOM this part has been changed, and must be validated" -msgstr "" +msgstr "A LDM dessa peça foi alterada, e deve ser validada" #: part/templates/part/bom.html:17 #, python-format msgid "This BOM was last checked by %(checker)s on %(check_date)s" -msgstr "" +msgstr "Esta BOM foi verificada por %(checker)s em %(check_date)s" #: part/templates/part/bom.html:21 msgid "This BOM has not been validated." -msgstr "" +msgstr "A BOM não foi validada." #: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" -msgstr "" +msgstr "Fazer balanço de estoque para esta categoria de peça" #: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" -msgstr "" +msgstr "Você está inscrito para notificações desta categoria" #: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" -msgstr "" +msgstr "Inscrever-se para notificações desta categoria" #: part/templates/part/category.html:55 msgid "Category Actions" -msgstr "" +msgstr "Ações de Categoria" #: part/templates/part/category.html:60 msgid "Edit category" -msgstr "" +msgstr "Editar categoria" #: part/templates/part/category.html:61 msgid "Edit Category" -msgstr "" +msgstr "Editar Categoria" #: part/templates/part/category.html:65 msgid "Delete category" -msgstr "" +msgstr "Excluir categoria" #: part/templates/part/category.html:66 msgid "Delete Category" -msgstr "" +msgstr "Excluir Categoria" #: part/templates/part/category.html:102 msgid "Top level part category" -msgstr "" +msgstr "Categoria de peça de nível superior" #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" -msgstr "" +msgstr "Sub-categorias" #: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" -msgstr "" +msgstr "Peças (incluindo subcategorias)" #: part/templates/part/category.html:165 msgid "Create new part" -msgstr "" +msgstr "Criar nova peça" #: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" -msgstr "" +msgstr "Nova Peça" #: part/templates/part/category.html:192 #: templates/InvenTree/settings/part_parameters.html:7 #: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" -msgstr "" +msgstr "Parâmetros da Peça" #: part/templates/part/category.html:211 msgid "Create new part category" -msgstr "" +msgstr "Criar categoria de peça" #: part/templates/part/category.html:212 msgid "New Category" -msgstr "" +msgstr "Nova Categoria" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" -msgstr "" +msgstr "Importar Peças" #: part/templates/part/copy_part.html:10 #, python-format msgid "Make a copy of part '%(full_name)s'." -msgstr "" +msgstr "Faça uma cópia da peça '%(full_name)s'." #: part/templates/part/copy_part.html:14 #: part/templates/part/create_part.html:11 msgid "Possible Matching Parts" -msgstr "" +msgstr "Possíveis peças correspondentes" #: part/templates/part/copy_part.html:15 #: part/templates/part/create_part.html:12 msgid "The new part may be a duplicate of these existing parts" -msgstr "" +msgstr "A nova peça pode ser uma duplicata dessas peças existentes" #: part/templates/part/create_part.html:17 #, python-format msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" -msgstr "" +msgstr "%(full_name)s - %(desc)s (%(match_per)s%% correspondência)" #: part/templates/part/detail.html:20 msgid "Part Stock" -msgstr "" +msgstr "Estoque da Peça" #: part/templates/part/detail.html:44 msgid "Refresh scheduling data" -msgstr "" +msgstr "Atualizar dados de agendamento" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 #: templates/js/translated/tables.js:552 msgid "Refresh" -msgstr "" +msgstr "Recarregar" #: part/templates/part/detail.html:66 msgid "Add stocktake information" -msgstr "" +msgstr "Adicionar informações de balanço de estoque" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" -msgstr "" +msgstr "Balanço" #: part/templates/part/detail.html:83 msgid "Part Test Templates" -msgstr "" +msgstr "Modelos de Teste de Peça" #: part/templates/part/detail.html:88 msgid "Add Test Template" -msgstr "" +msgstr "Adicionar Modelo de Teste" #: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" -msgstr "" +msgstr "Alocações do Pedido de Vendas" #: part/templates/part/detail.html:156 msgid "Part Notes" -msgstr "" +msgstr "Notas de Peça" #: part/templates/part/detail.html:171 msgid "Part Variants" -msgstr "" +msgstr "Variantes de Peça" #: part/templates/part/detail.html:175 msgid "Create new variant" -msgstr "" +msgstr "Criar variante" #: part/templates/part/detail.html:176 msgid "New Variant" -msgstr "" +msgstr "Nova Variação" #: part/templates/part/detail.html:199 msgid "Add new parameter" -msgstr "" +msgstr "Adicionar um novo parâmetro" #: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" -msgstr "" +msgstr "Peças Relacionadas" #: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" -msgstr "" +msgstr "Adicionar Relacionado" #: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" -msgstr "" +msgstr "Lista de Materiais" #: part/templates/part/detail.html:260 msgid "Export actions" -msgstr "" +msgstr "Exportar Ações" #: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" -msgstr "" +msgstr "Exportar LDM" #: part/templates/part/detail.html:266 msgid "Print BOM Report" -msgstr "" +msgstr "Imprimir Relatório da LDM" #: part/templates/part/detail.html:272 msgid "BOM actions" -msgstr "" +msgstr "Ações da LDM" #: part/templates/part/detail.html:276 msgid "Upload BOM" -msgstr "" +msgstr "Carregar LDM" #: part/templates/part/detail.html:278 msgid "Validate BOM" -msgstr "" +msgstr "Validar LDM" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 #: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" -msgstr "" +msgstr "Adicionar Item LDM" #: part/templates/part/detail.html:297 msgid "Assemblies" -msgstr "" +msgstr "Montagens" #: part/templates/part/detail.html:313 msgid "Part Builds" -msgstr "" +msgstr "Produções de peça" #: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" -msgstr "" +msgstr "Alocações de Pedido de Produção" #: part/templates/part/detail.html:352 msgid "Part Suppliers" -msgstr "" +msgstr "Fornecedores da peça" #: part/templates/part/detail.html:372 msgid "Part Manufacturers" -msgstr "" +msgstr "Fabricantes da peça" #: part/templates/part/detail.html:659 msgid "Related Part" -msgstr "" +msgstr "Peça Relacionada" #: part/templates/part/detail.html:667 msgid "Add Related Part" -msgstr "" +msgstr "Adicionar Peça Relacionada" #: part/templates/part/detail.html:752 msgid "Add Test Result Template" -msgstr "" +msgstr "Adicionar Modelo de Resultado de Teste" #: part/templates/part/import_wizard/ajax_part_upload.html:29 #: part/templates/part/import_wizard/part_upload.html:14 msgid "Insufficient privileges." -msgstr "" +msgstr "Permissões insuficientes." #: part/templates/part/import_wizard/part_upload.html:8 msgid "Return to Parts" -msgstr "" +msgstr "Retornar para Peças" #: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" -msgstr "" +msgstr "Importar Peças de um Arquivo" #: part/templates/part/import_wizard/part_upload.html:31 msgid "Requirements for part import" -msgstr "" +msgstr "Requerimentos para importar peça" #: part/templates/part/import_wizard/part_upload.html:33 msgid "The part import file must contain the required named columns as provided in the " -msgstr "" +msgstr "O arquivo para importar peças deve conter as colunas nomeadas como fornecido na " #: part/templates/part/import_wizard/part_upload.html:33 msgid "Part Import Template" -msgstr "" +msgstr "Modelo de importação de Peças" #: part/templates/part/import_wizard/part_upload.html:89 msgid "Download Part Import Template" -msgstr "" +msgstr "Baixar Modelo de Importação de Peça" #: part/templates/part/import_wizard/part_upload.html:92 #: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" -msgstr "" +msgstr "Formato" #: part/templates/part/import_wizard/part_upload.html:93 #: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" -msgstr "" +msgstr "Selecione o formato de arquivo" #: part/templates/part/part_app_base.html:12 msgid "Part List" -msgstr "" +msgstr "Lista de Peças" #: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" -msgstr "" +msgstr "Você está inscrito para notificações desta peça" #: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" -msgstr "" +msgstr "Inscrever-se para notificações desta peça" #: part/templates/part/part_base.html:52 #: stock/templates/stock/item_base.html:62 #: stock/templates/stock/location.html:74 msgid "Print Label" -msgstr "" +msgstr "Imprimir Etiqueta" #: part/templates/part/part_base.html:58 msgid "Show pricing information" -msgstr "" +msgstr "Mostrar informações de preços" #: part/templates/part/part_base.html:63 #: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:83 msgid "Stock actions" -msgstr "" +msgstr "Ações de Estoque" #: part/templates/part/part_base.html:70 msgid "Count part stock" -msgstr "" +msgstr "Contagem peça em estoque" #: part/templates/part/part_base.html:76 msgid "Transfer part stock" -msgstr "" +msgstr "Transferir estoque de peça" #: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" -msgstr "" +msgstr "Ações de peça" #: part/templates/part/part_base.html:94 msgid "Duplicate part" -msgstr "" +msgstr "Peça duplicada" #: part/templates/part/part_base.html:97 msgid "Edit part" -msgstr "" +msgstr "Editar peça" #: part/templates/part/part_base.html:100 msgid "Delete part" -msgstr "" +msgstr "Excluir peça" #: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" -msgstr "" +msgstr "Esta é uma peça modelo (as variantes podem ser feitas a partir desta peça)" #: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" -msgstr "" +msgstr "Peças pode ser montada a partir de outras peças" #: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" -msgstr "" +msgstr "Peça pode ser usada em montagens" #: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" -msgstr "" +msgstr "Peça em estoque é controlada por número de série" #: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" -msgstr "" +msgstr "Peça pode ser comprada de fornecedores externos" #: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" -msgstr "" +msgstr "Peça pode ser vendida a clientes" #: part/templates/part/part_base.html:145 msgid "Part is not active" -msgstr "" +msgstr "Peça inativa" #: part/templates/part/part_base.html:146 #: templates/js/translated/company.js:1277 @@ -7076,127 +7277,123 @@ msgstr "" #: templates/js/translated/model_renderers.js:304 #: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 msgid "Inactive" -msgstr "" +msgstr "Inativo" #: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" -msgstr "" +msgstr "Peça é virtual (não é algo físico)" #: part/templates/part/part_base.html:163 #: part/templates/part/part_base.html:682 msgid "Show Part Details" -msgstr "" +msgstr "Mostrar Detalhes de Peça" #: part/templates/part/part_base.html:218 #: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" -msgstr "" +msgstr "Alocado para Pedidos de Construção" #: part/templates/part/part_base.html:227 #: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" -msgstr "" +msgstr "Alocado para Pedidos de Venda" #: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" -msgstr "" +msgstr "Pode Produzir" #: part/templates/part/part_base.html:291 msgid "Minimum stock level" -msgstr "" +msgstr "Nível mínimo de estoque" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 #: templates/js/translated/part.js:1264 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" -msgstr "" +msgstr "Faixa de Preço" #: part/templates/part/part_base.html:352 msgid "Latest Serial Number" -msgstr "" +msgstr "Último Número de Série" #: part/templates/part/part_base.html:356 #: stock/templates/stock/item_base.html:322 msgid "Search for serial number" -msgstr "" +msgstr "Procurar por número serial" #: part/templates/part/part_base.html:444 msgid "Part QR Code" -msgstr "" +msgstr "QR Code da Peça" #: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" -msgstr "" - -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" +msgstr "Vincular Código de Barras à Peça" #: part/templates/part/part_base.html:512 msgid "Calculate" -msgstr "" +msgstr "Calcular" #: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" -msgstr "" +msgstr "Remover imagem associada a esta peça" #: part/templates/part/part_base.html:580 msgid "No matching images found" -msgstr "" +msgstr "Nenhuma imagem correspondente encontrada" #: part/templates/part/part_base.html:676 msgid "Hide Part Details" -msgstr "" +msgstr "Esconder Detalhes da Peça" #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:76 #: part/templates/part/prices.html:227 templates/js/translated/pricing.js:485 msgid "Supplier Pricing" -msgstr "" +msgstr "Preço do fornecedor" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:95 #: part/templates/part/part_pricing.html:110 msgid "Unit Cost" -msgstr "" +msgstr "Custo unitário" #: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" -msgstr "" +msgstr "Nenhuma informação dos preços do fornecedor disponível" #: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:90 #: part/templates/part/prices.html:250 msgid "BOM Pricing" -msgstr "" +msgstr "Preço LDM" #: part/templates/part/part_pricing.html:66 msgid "Unit Purchase Price" -msgstr "" +msgstr "Preço Unitário de Compra" #: part/templates/part/part_pricing.html:72 msgid "Total Purchase Price" -msgstr "" +msgstr "Preço Total de Compra" #: part/templates/part/part_pricing.html:83 msgid "No BOM pricing available" -msgstr "" +msgstr "Preços LDM indisponíveis" #: part/templates/part/part_pricing.html:92 msgid "Internal Price" -msgstr "" +msgstr "Preço Interno" #: part/templates/part/part_pricing.html:123 msgid "No pricing information is available for this part." -msgstr "" +msgstr "Nenhuma informação de preço está disponível para esta peça." #: part/templates/part/part_scheduling.html:14 msgid "Scheduled Quantity" -msgstr "" +msgstr "Quantidade Agendada" #: part/templates/part/part_sidebar.html:11 msgid "Variants" -msgstr "" +msgstr "Variantes" #: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 @@ -7207,36 +7404,36 @@ msgstr "" #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" -msgstr "" +msgstr "Estoque" #: part/templates/part/part_sidebar.html:30 #: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" -msgstr "" +msgstr "Preços" #: part/templates/part/part_sidebar.html:44 msgid "Scheduling" -msgstr "" +msgstr "Agendamento" #: part/templates/part/part_sidebar.html:54 msgid "Test Templates" -msgstr "" +msgstr "Testar Modelos" #: part/templates/part/part_thumb.html:11 msgid "Select from existing images" -msgstr "" +msgstr "Selecionar de imagens existentes" #: part/templates/part/prices.html:11 msgid "Pricing Overview" -msgstr "" +msgstr "Resumo de Preços" #: part/templates/part/prices.html:14 msgid "Refresh Part Pricing" -msgstr "" +msgstr "Atualizar Preço da Peça" #: part/templates/part/prices.html:17 msgid "Override Part Pricing" -msgstr "" +msgstr "Sobrepor Preço da Peça" #: part/templates/part/prices.html:18 #: templates/InvenTree/settings/settings_staff_js.html:80 @@ -7245,821 +7442,896 @@ msgstr "" #: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" -msgstr "" +msgstr "Editar" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 #: templates/js/translated/stock.js:2216 msgid "Last Updated" -msgstr "" +msgstr "Última atualização" #: part/templates/part/prices.html:37 part/templates/part/prices.html:127 msgid "Price Category" -msgstr "" +msgstr "Categoria de preço" #: part/templates/part/prices.html:38 part/templates/part/prices.html:128 msgid "Minimum" -msgstr "" +msgstr "Mínimo" #: part/templates/part/prices.html:39 part/templates/part/prices.html:129 msgid "Maximum" -msgstr "" +msgstr "Máximo" #: part/templates/part/prices.html:51 part/templates/part/prices.html:174 msgid "Internal Pricing" -msgstr "" +msgstr "Preço Interno" #: part/templates/part/prices.html:64 part/templates/part/prices.html:206 msgid "Purchase History" -msgstr "" +msgstr "Histórico de Compras" #: part/templates/part/prices.html:98 part/templates/part/prices.html:274 msgid "Variant Pricing" -msgstr "" +msgstr "Preço Variável" #: part/templates/part/prices.html:106 msgid "Pricing Overrides" -msgstr "" +msgstr "Sobrepor preços" #: part/templates/part/prices.html:113 msgid "Overall Pricing" -msgstr "" +msgstr "Preços Gerais" #: part/templates/part/prices.html:149 part/templates/part/prices.html:326 msgid "Sale History" -msgstr "" +msgstr "Histórico de vendas" #: part/templates/part/prices.html:157 msgid "Sale price data is not available for this part" -msgstr "" +msgstr "Dados de preço de venda não estão disponíveis para esta peça" #: part/templates/part/prices.html:164 msgid "Price range data is not available for this part." -msgstr "" +msgstr "Dados do intervalo de preços não estão disponíveis para esta peça." #: part/templates/part/prices.html:175 part/templates/part/prices.html:207 #: part/templates/part/prices.html:228 part/templates/part/prices.html:251 #: part/templates/part/prices.html:275 part/templates/part/prices.html:298 #: part/templates/part/prices.html:327 msgid "Jump to overview" -msgstr "" +msgstr "Ir para visão geral" #: part/templates/part/prices.html:180 msgid "Add Internal Price Break" -msgstr "" +msgstr "Adicionar intervalo de preço interno" #: part/templates/part/prices.html:297 msgid "Sale Pricing" -msgstr "" +msgstr "Preço de Venda" #: part/templates/part/prices.html:303 msgid "Add Sell Price Break" -msgstr "" +msgstr "Adicionar intervalo de preço de venda" #: part/templates/part/pricing_javascript.html:24 msgid "Update Pricing" -msgstr "" +msgstr "Atualizar Preços" #: part/templates/part/stock_count.html:7 templates/js/translated/part.js:704 #: templates/js/translated/part.js:2140 templates/js/translated/part.js:2142 msgid "No Stock" -msgstr "" +msgstr "Sem Estoque" #: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" -msgstr "" +msgstr "Estoque Baixo" #: part/templates/part/upload_bom.html:8 msgid "Return to BOM" -msgstr "" +msgstr "Voltar à LDM" #: part/templates/part/upload_bom.html:13 msgid "Upload Bill of Materials" -msgstr "" +msgstr "Carregar a Lista de materiais" #: part/templates/part/upload_bom.html:19 msgid "BOM upload requirements" -msgstr "" +msgstr "Requisitos para carregar LDM" #: part/templates/part/upload_bom.html:23 #: part/templates/part/upload_bom.html:90 msgid "Upload BOM File" -msgstr "" +msgstr "Carregar Arquivo LDM" #: part/templates/part/upload_bom.html:29 msgid "Submit BOM Data" -msgstr "" +msgstr "Enviar Dados LDM" #: part/templates/part/upload_bom.html:37 msgid "Requirements for BOM upload" -msgstr "" +msgstr "Requisitos para carregar a LDM" #: part/templates/part/upload_bom.html:39 msgid "The BOM file must contain the required named columns as provided in the " -msgstr "" +msgstr "O arquivo da LDM deve conter as colunas nomeadas como fornecido na " #: part/templates/part/upload_bom.html:39 msgid "BOM Upload Template" -msgstr "" +msgstr "Carregar Modelo de LDM" #: part/templates/part/upload_bom.html:40 msgid "Each part must already exist in the database" -msgstr "" +msgstr "Cada peça deve existir no banco de dados" #: part/templates/part/variant_part.html:9 msgid "Create new part variant" -msgstr "" +msgstr "Criar variante de peça" #: part/templates/part/variant_part.html:10 msgid "Create a new variant part from this template" -msgstr "" +msgstr "Criar uma peça variante a partir deste modelo" #: part/views.py:111 msgid "Match References" -msgstr "" +msgstr "Referências de combinações" #: part/views.py:275 #, python-brace-format msgid "Can't import part {new_part.name} because there is no category assigned" -msgstr "" +msgstr "Não é possível importar a peça {new_part.name} pois não há uma categoria atribuída" #: part/views.py:425 msgid "Select Part Image" -msgstr "" +msgstr "Selecionar Imagem da Peça" #: part/views.py:448 msgid "Updated part image" -msgstr "" +msgstr "Atualizar imagem da peça" #: part/views.py:451 msgid "Part image not found" -msgstr "" +msgstr "Imagem da peça não encontrada" #: part/views.py:545 msgid "Part Pricing" +msgstr "Preço Peça" + +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/base/action/api.py:32 msgid "No action specified" -msgstr "" +msgstr "Nenhuma ação especificada" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" -msgstr "" +msgstr "Nenhuma ação correspondente encontrada" #: plugin/base/barcodes/api.py:124 plugin/base/barcodes/api.py:328 #: plugin/base/barcodes/api.py:503 msgid "No match found for barcode data" -msgstr "" +msgstr "Nenhum resultado encontrado para os dados do código de barras" #: plugin/base/barcodes/api.py:128 msgid "Match found for barcode data" -msgstr "" +msgstr "Coincidência encontrada para dados de código de barras" #: plugin/base/barcodes/api.py:154 #: templates/js/translated/purchase_order.js:1402 msgid "Barcode matches existing item" -msgstr "" +msgstr "Código de barras corresponde ao item existente" #: plugin/base/barcodes/api.py:293 msgid "No matching part data found" -msgstr "" +msgstr "Nenhuma informação de peça correspondente encontrada" #: plugin/base/barcodes/api.py:310 msgid "No matching supplier parts found" -msgstr "" +msgstr "Nenhuma peça de fornecedor correspondente encontrada" #: plugin/base/barcodes/api.py:314 msgid "Multiple matching supplier parts found" -msgstr "" +msgstr "Múltiplas peças de fornecedores correspondentes encontradas" #: plugin/base/barcodes/api.py:338 msgid "Matched supplier part" -msgstr "" +msgstr "Peça de fornecedor correspondente" #: plugin/base/barcodes/api.py:387 msgid "Item has already been received" -msgstr "" +msgstr "Item do pedido já foi recebido" #: plugin/base/barcodes/api.py:424 msgid "No match for supplier barcode" -msgstr "" +msgstr "Nenhuma correspondência para o código de barras do fornecedor" #: plugin/base/barcodes/api.py:467 msgid "Multiple matching line items found" -msgstr "" +msgstr "Diversos itens de linha correspondentes encontrados" #: plugin/base/barcodes/api.py:470 msgid "No matching line item found" -msgstr "" +msgstr "Nenhum item de linha correspondente encontrado" #: plugin/base/barcodes/api.py:508 plugin/base/barcodes/api.py:515 msgid "Barcode does not match an existing stock item" -msgstr "" +msgstr "Código de barras não corresponde a item de estoque válido" #: plugin/base/barcodes/api.py:526 msgid "Stock item does not match line item" -msgstr "" +msgstr "Item do estoque não corresponde ao item de linha" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" -msgstr "" +msgstr "Estoque insuficiente disponível" #: plugin/base/barcodes/api.py:559 msgid "Stock item allocated to sales order" -msgstr "" +msgstr "Item de estoque atribuído para pedido de venda" #: plugin/base/barcodes/api.py:563 msgid "Not enough information" -msgstr "" +msgstr "Não há informação suficiente" #: plugin/base/barcodes/mixins.py:147 plugin/base/barcodes/mixins.py:179 msgid "Found multiple matching supplier parts for barcode" -msgstr "" +msgstr "Múltiplas peças de fornecedores correspondentes encontradas para o código de barras" #: plugin/base/barcodes/mixins.py:197 #, python-brace-format msgid "Found multiple purchase orders matching '{order}'" -msgstr "" +msgstr "Encontrados vários pedidos de compra correspondentes a '{order}'" #: plugin/base/barcodes/mixins.py:201 #, python-brace-format msgid "No matching purchase order for '{order}'" -msgstr "" +msgstr "Nenhum pedido de compra correspondente a '{order}' encontrado" #: plugin/base/barcodes/mixins.py:207 msgid "Purchase order does not match supplier" -msgstr "" +msgstr "Pedido de compra não corresponde ao fornecedor" #: plugin/base/barcodes/mixins.py:441 msgid "Failed to find pending line item for supplier part" -msgstr "" +msgstr "Falha ao encontrar item de linha pendente para a parte do fornecedor" #: plugin/base/barcodes/mixins.py:472 msgid "Further information required to receive line item" -msgstr "" +msgstr "Mais informações necessárias para receber o item de linha" #: plugin/base/barcodes/mixins.py:480 msgid "Received purchase order line item" -msgstr "" +msgstr "Item de linha do pedido de compra recebido" #: plugin/base/barcodes/serializers.py:21 msgid "Scanned barcode data" -msgstr "" +msgstr "Dados do código de barras lido" #: plugin/base/barcodes/serializers.py:81 msgid "Purchase Order to allocate items against" -msgstr "" +msgstr "Pedido de compra para alocar itens contra" #: plugin/base/barcodes/serializers.py:87 msgid "Purchase order is not pending" -msgstr "" +msgstr "O pedido de compra não está pendente" #: plugin/base/barcodes/serializers.py:105 msgid "PurchaseOrder to receive items against" -msgstr "" +msgstr "Pedido de compra para receber itens contra" #: plugin/base/barcodes/serializers.py:111 msgid "Purchase order has not been placed" -msgstr "" +msgstr "O pedido de compra não foi realizado" #: plugin/base/barcodes/serializers.py:119 msgid "Location to receive items into" -msgstr "" +msgstr "Localização para receber itens" #: plugin/base/barcodes/serializers.py:125 msgid "Cannot select a structural location" -msgstr "" +msgstr "Não é possível selecionar um local estrutural" #: plugin/base/barcodes/serializers.py:139 msgid "Sales Order to allocate items against" -msgstr "" +msgstr "Pedido de compra para alocar itens contra" #: plugin/base/barcodes/serializers.py:145 msgid "Sales order is not pending" -msgstr "" +msgstr "O pedido de venda não está pendente" #: plugin/base/barcodes/serializers.py:153 msgid "Sales order line item to allocate items against" -msgstr "" +msgstr "Item de linha do pedido de venda para alocar itens contra" #: plugin/base/barcodes/serializers.py:160 msgid "Sales order shipment to allocate items against" -msgstr "" +msgstr "Envio do pedido de venda para alocar itens contra" #: plugin/base/barcodes/serializers.py:166 msgid "Shipment has already been delivered" -msgstr "" +msgstr "O envio já foi entregue" #: plugin/base/barcodes/serializers.py:171 msgid "Quantity to allocate" -msgstr "" +msgstr "Quantidade a alocar" #: plugin/base/label/label.py:39 msgid "Label printing failed" +msgstr "Impressão de etiqueta falhou" + +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" -msgstr "" +msgstr "Códigos de Barras InvenTree" #: plugin/builtin/barcodes/inventree_barcode.py:26 msgid "Provides native support for barcodes" -msgstr "" +msgstr "Fornece suporte nativo para códigos de barras" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 msgid "InvenTree contributors" -msgstr "" +msgstr "Contribuidores do InvenTree" #: plugin/builtin/integration/core_notifications.py:34 msgid "InvenTree Notifications" -msgstr "" +msgstr "Notificações do InvenTree" #: plugin/builtin/integration/core_notifications.py:36 msgid "Integrated outgoing notification methods" -msgstr "" +msgstr "Métodos de envio de notificação integrados" #: plugin/builtin/integration/core_notifications.py:41 #: plugin/builtin/integration/core_notifications.py:80 msgid "Enable email notifications" -msgstr "" +msgstr "Habilitar notificações por email" #: plugin/builtin/integration/core_notifications.py:42 #: plugin/builtin/integration/core_notifications.py:81 msgid "Allow sending of emails for event notifications" -msgstr "" +msgstr "Permitir enviar emails para notificações de eventos" #: plugin/builtin/integration/core_notifications.py:47 msgid "Enable slack notifications" -msgstr "" +msgstr "Habilitar notificações por Slack" #: plugin/builtin/integration/core_notifications.py:49 msgid "Allow sending of slack channel messages for event notifications" -msgstr "" +msgstr "Permitir envio de notificações de eventos pelo canal de mensagens do slack" #: plugin/builtin/integration/core_notifications.py:55 msgid "Slack incoming webhook url" -msgstr "" +msgstr "Link do gancho de entrada do Slack" #: plugin/builtin/integration/core_notifications.py:56 msgid "URL that is used to send messages to a slack channel" -msgstr "" +msgstr "URL usada para enviar mensagens para um canal do Slack" #: plugin/builtin/integration/core_notifications.py:164 msgid "Open link" -msgstr "" +msgstr "Abrir link" #: plugin/builtin/integration/currency_exchange.py:22 msgid "InvenTree Currency Exchange" -msgstr "" +msgstr "Câmbio de Moeda InvenTree" #: plugin/builtin/integration/currency_exchange.py:23 msgid "Default currency exchange integration" -msgstr "" +msgstr "Integração padrão de câmbio de moeda" #: plugin/builtin/labels/inventree_label.py:20 msgid "InvenTree PDF label printer" -msgstr "" +msgstr "Impressora de etiquetas PDF do InvenTree" #: plugin/builtin/labels/inventree_label.py:21 msgid "Provides native support for printing PDF labels" -msgstr "" +msgstr "Providenciar suporte nativo para impressão de etiquetas em PDF" #: plugin/builtin/labels/inventree_label.py:29 msgid "Debug mode" -msgstr "" +msgstr "Modo de depuração" #: plugin/builtin/labels/inventree_label.py:30 msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "Ativar o modo de depuração - retorna HTML bruto em vez de PDF" + +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" msgstr "" #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" -msgstr "" +msgstr "Tamanho da página para folha de etiqueta" #: plugin/builtin/labels/label_sheet.py:34 msgid "Skip Labels" -msgstr "" +msgstr "Pular Etiquetas" #: plugin/builtin/labels/label_sheet.py:35 msgid "Skip this number of labels when printing label sheets" -msgstr "" +msgstr "Ignorar este número de etiquetas quando imprimir folhas de etiquetas" #: plugin/builtin/labels/label_sheet.py:41 msgid "Border" -msgstr "" +msgstr "Borda" #: plugin/builtin/labels/label_sheet.py:42 msgid "Print a border around each label" -msgstr "" +msgstr "Imprima uma borda em torno de cada etiqueta" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" -msgstr "" +msgstr "Paisagem" #: plugin/builtin/labels/label_sheet.py:48 msgid "Print the label sheet in landscape mode" -msgstr "" +msgstr "Imprimir a folha de etiqueta no modo paisagem" #: plugin/builtin/labels/label_sheet.py:60 msgid "InvenTree Label Sheet Printer" -msgstr "" +msgstr "Impressora de folhas de etiqueta do InvenTree" #: plugin/builtin/labels/label_sheet.py:61 msgid "Arrays multiple labels onto a single sheet" -msgstr "" +msgstr "Matriz várias etiquetas em uma única folha" #: plugin/builtin/labels/label_sheet.py:94 msgid "Label is too large for page size" -msgstr "" +msgstr "A etiqueta é muito grande para tamanho de página" #: plugin/builtin/labels/label_sheet.py:128 msgid "No labels were generated" -msgstr "" +msgstr "Nenhuma etiqueta foi gerada" #: plugin/builtin/suppliers/digikey.py:16 msgid "Supplier Integration - DigiKey" -msgstr "" +msgstr "Integração de fornecedor - DigiKey" #: plugin/builtin/suppliers/digikey.py:17 msgid "Provides support for scanning DigiKey barcodes" -msgstr "" +msgstr "Fornece suporte para escanear códigos de barras DigiKey" #: plugin/builtin/suppliers/digikey.py:26 msgid "The Supplier which acts as 'DigiKey'" -msgstr "" +msgstr "O fornecedor que atua como 'DigiKey'" #: plugin/builtin/suppliers/lcsc.py:18 msgid "Supplier Integration - LCSC" -msgstr "" +msgstr "Integração de fornecedor - LCSC" #: plugin/builtin/suppliers/lcsc.py:19 msgid "Provides support for scanning LCSC barcodes" -msgstr "" +msgstr "Fornece suporte para escanear códigos de barras LCSC" #: plugin/builtin/suppliers/lcsc.py:27 msgid "The Supplier which acts as 'LCSC'" -msgstr "" +msgstr "O fornecedor que atua como 'LCSC'" #: plugin/builtin/suppliers/mouser.py:16 msgid "Supplier Integration - Mouser" -msgstr "" +msgstr "Integração de fornecedor - Mouser" #: plugin/builtin/suppliers/mouser.py:17 msgid "Provides support for scanning Mouser barcodes" -msgstr "" +msgstr "Fornece suporte para escanear códigos de barras Mouser" #: plugin/builtin/suppliers/mouser.py:25 msgid "The Supplier which acts as 'Mouser'" -msgstr "" +msgstr "O fornecedor que atua como 'Mouser'" #: plugin/builtin/suppliers/tme.py:18 msgid "Supplier Integration - TME" -msgstr "" +msgstr "Integração de fornecedor - TME" #: plugin/builtin/suppliers/tme.py:19 msgid "Provides support for scanning TME barcodes" -msgstr "" +msgstr "Fornece suporte para escanear códigos de barras TME" #: plugin/builtin/suppliers/tme.py:27 msgid "The Supplier which acts as 'TME'" +msgstr "O fornecedor que atua como 'TME'" + +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" -msgstr "" - -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" -msgstr "" +msgstr "Plugin instalado com sucesso" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" +msgstr "Plugin instalado na {path}" + +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "Configuração de Extensão" + +#: plugin/models.py:31 msgid "Plugin Configurations" -msgstr "" +msgstr "Configuração de Extensões" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" -msgstr "" +msgstr "Chave" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" -msgstr "" +msgstr "Chave da extensão" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" +msgstr "Nome da Extensão" + +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "Nome do Pacote" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:56 msgid "Is the plugin active" -msgstr "" +msgstr "O plug-in está ativo" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" -msgstr "" +msgstr "Instalado" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" -msgstr "" +msgstr "Plug-in de exemplo" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" +msgstr "Plugin embutido" + +#: plugin/models.py:173 +msgid "Package Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" -msgstr "" +msgstr "Extensões" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" -msgstr "" +msgstr "Método" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" -msgstr "" +msgstr "Nenhum autor encontrado" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" -msgstr "" +msgstr "A extensão '{p}' não é compatível com a versão atual do InvenTree {v}" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" -msgstr "" +msgstr "Extensão requer pelo menos a versão {v}" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" -msgstr "" +msgstr "Extensão requer no máximo a versão {v}" #: plugin/samples/integration/sample.py:52 msgid "Enable PO" -msgstr "" +msgstr "Ativar PO" #: plugin/samples/integration/sample.py:53 msgid "Enable PO functionality in InvenTree interface" -msgstr "" +msgstr "Ativar a funcionalidade PO na interface InvenTree" #: plugin/samples/integration/sample.py:58 msgid "API Key" -msgstr "" +msgstr "Chave API" #: plugin/samples/integration/sample.py:59 msgid "Key required for accessing external API" -msgstr "" +msgstr "Chave necessária para acesso à API externa" #: plugin/samples/integration/sample.py:63 msgid "Numerical" -msgstr "" +msgstr "Numérico" #: plugin/samples/integration/sample.py:64 msgid "A numerical setting" -msgstr "" +msgstr "Uma configuração numérica" #: plugin/samples/integration/sample.py:69 msgid "Choice Setting" -msgstr "" +msgstr "Configurações de Escolha" #: plugin/samples/integration/sample.py:70 msgid "A setting with multiple choices" -msgstr "" +msgstr "Uma configuração com várias escolhas" #: plugin/samples/integration/sample_currency_exchange.py:15 msgid "Sample currency exchange plugin" -msgstr "" +msgstr "Plugin de Câmbio de exemplo" #: plugin/samples/integration/sample_currency_exchange.py:18 msgid "InvenTree Contributors" -msgstr "" - -#: plugin/serializers.py:79 -msgid "Source URL" -msgstr "" +msgstr "Contribuidores do InvenTree" #: plugin/serializers.py:81 +msgid "Source URL" +msgstr "URL de origem" + +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" -msgstr "" +msgstr "Fonte do pacote — este pode ser um registro personalizado ou um caminho de VCS" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" +msgstr "Nome para o Pacote da Extensão — também pode conter um indicador de versão" + +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "Versão" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:106 msgid "Confirm plugin installation" -msgstr "" - -#: plugin/serializers.py:95 -msgid "This will install this plugin now into the current instance. The instance will go into maintenance." -msgstr "" +msgstr "Confirmar instalação da extensão" #: plugin/serializers.py:108 +msgid "This will install this plugin now into the current instance. The instance will go into maintenance." +msgstr "Isto instalará a extensão agora na instância atual. A instância irá entrar em manutenção." + +#: plugin/serializers.py:121 msgid "Installation not confirmed" -msgstr "" +msgstr "Instalação não confirmada" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" -msgstr "" - -#: plugin/serializers.py:139 -msgid "Full reload" -msgstr "" - -#: plugin/serializers.py:140 -msgid "Perform a full reload of the plugin registry" -msgstr "" - -#: plugin/serializers.py:146 -msgid "Force reload" -msgstr "" - -#: plugin/serializers.py:148 -msgid "Force a reload of the plugin registry, even if it is already loaded" -msgstr "" - -#: plugin/serializers.py:155 -msgid "Collect plugins" -msgstr "" +msgstr "Qualquer nome do pacote URL deve ser fornecido" #: plugin/serializers.py:156 +msgid "Full reload" +msgstr "Recarregamento completo" + +#: plugin/serializers.py:157 +msgid "Perform a full reload of the plugin registry" +msgstr "Realize um recarregamento completo do registro de plugin" + +#: plugin/serializers.py:163 +msgid "Force reload" +msgstr "Forçar recarregamento" + +#: plugin/serializers.py:165 +msgid "Force a reload of the plugin registry, even if it is already loaded" +msgstr "Forçar um recarregamento do registro do plugin, mesmo que já esteja carregado" + +#: plugin/serializers.py:172 +msgid "Collect plugins" +msgstr "Coletar plugins" + +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" -msgstr "" +msgstr "Colete plugins e adicione-os ao registro" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" +msgstr "Ativar Extensão" + +#: plugin/serializers.py:196 +msgid "Activate this plugin" +msgstr "Ativar esta extensão" + +#: plugin/serializers.py:219 +msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:179 -msgid "Activate this plugin" +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" msgstr "" #: report/api.py:175 msgid "No valid objects provided to template" -msgstr "" +msgstr "Nenhum objeto válido fornecido para o modelo" #: report/api.py:214 report/api.py:251 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" -msgstr "" +msgstr "Arquivo modelo '{template}' perdido ou não existe" #: report/api.py:331 msgid "Test report" -msgstr "" +msgstr "Relatório de teste" #: report/helpers.py:15 msgid "A4" -msgstr "" +msgstr "A4" #: report/helpers.py:16 msgid "A3" -msgstr "" +msgstr "A3" #: report/helpers.py:17 msgid "Legal" -msgstr "" +msgstr "Ofício" #: report/helpers.py:18 msgid "Letter" -msgstr "" +msgstr "Carta" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" -msgstr "" +msgstr "Nome do modelo" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" -msgstr "" +msgstr "Arquivo modelo de relatório" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" -msgstr "" +msgstr "Descrição do modelo de relatório" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" -msgstr "" +msgstr "Relatar número de revisão (auto-incrementos)" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" -msgstr "" +msgstr "Tamanho da página para relatórios PDF" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" -msgstr "" - -#: report/models.py:309 -msgid "Pattern for generating report filenames" -msgstr "" +msgstr "Renderizar relatório em orientação paisagem" #: report/models.py:316 -msgid "Report template is enabled" -msgstr "" +msgid "Pattern for generating report filenames" +msgstr "Padrão para gerar nomes de arquivo de relatórios" -#: report/models.py:338 -msgid "StockItem query filters (comma-separated list of key=value pairs)" -msgstr "" +#: report/models.py:323 +msgid "Report template is enabled" +msgstr "Modelo de relatório Habilitado" #: report/models.py:345 +msgid "StockItem query filters (comma-separated list of key=value pairs)" +msgstr "Filtros de consulta de itens de estoque(lista de valores separados por vírgula)" + +#: report/models.py:352 msgid "Include Installed Tests" -msgstr "" +msgstr "Incluir testes instalados" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" -msgstr "" +msgstr "Incluir resultados de testes para itens de estoque instalados dentro de item montado" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" -msgstr "" +msgstr "Filtros de Produção" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" -msgstr "" +msgstr "Filtros de consulta de produção (lista de valores separados por vírgula" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" -msgstr "" +msgstr "Filtros de Peças" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" -msgstr "" +msgstr "Filtros de consulta de peças (lista de valores separados por vírgula" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" -msgstr "" +msgstr "Filtros de consultas de pedidos de compra" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" -msgstr "" +msgstr "Filtros de consultas de pedidos de venda" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" -msgstr "" +msgstr "Filtrar pesquisa de itens devolvidos" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" -msgstr "" - -#: report/models.py:609 -msgid "Report snippet file" -msgstr "" +msgstr "Recorte" #: report/models.py:616 +msgid "Report snippet file" +msgstr "Relatar arquivo de recorte" + +#: report/models.py:623 msgid "Snippet file description" -msgstr "" +msgstr "Descrição do arquivo de recorte" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" -msgstr "" - -#: report/models.py:654 -msgid "Report asset file" -msgstr "" +msgstr "Patrimônio" #: report/models.py:661 -msgid "Asset file description" -msgstr "" +msgid "Report asset file" +msgstr "Reportar arquivo de ativos" -#: report/models.py:683 +#: report/models.py:668 +msgid "Asset file description" +msgstr "Descrição do arquivo de ativos" + +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" -msgstr "" +msgstr "filtros de consulta de locais de estoque(lista de valores separados por vírgula)" #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" -msgstr "" +msgstr "Materiais necessários" #: report/templates/report/inventree_build_order_base.html:146 msgid "Required For" -msgstr "" +msgstr "Necessário para" #: report/templates/report/inventree_po_report_base.html:15 msgid "Supplier was deleted" -msgstr "" +msgstr "Fornecedor foi excluído" #: report/templates/report/inventree_po_report_base.html:30 #: report/templates/report/inventree_so_report_base.html:30 @@ -8069,26 +8341,26 @@ msgstr "" #: templates/js/translated/purchase_order.js:2112 #: templates/js/translated/sales_order.js:1837 msgid "Unit Price" -msgstr "" +msgstr "Preço unitário" #: report/templates/report/inventree_po_report_base.html:55 #: report/templates/report/inventree_return_order_report_base.html:48 #: report/templates/report/inventree_so_report_base.html:55 msgid "Extra Line Items" -msgstr "" +msgstr "Extra Itens de Linha" #: report/templates/report/inventree_po_report_base.html:72 #: report/templates/report/inventree_so_report_base.html:72 #: templates/js/translated/purchase_order.js:2014 #: templates/js/translated/sales_order.js:1806 msgid "Total" -msgstr "" +msgstr "Total" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8097,2131 +8369,2130 @@ msgstr "" #: templates/js/translated/sales_order.js:1696 #: templates/js/translated/stock.js:596 msgid "Serial Number" -msgstr "" +msgstr "Número de Sério" #: report/templates/report/inventree_slr_report.html:97 msgid "Stock location items" -msgstr "" +msgstr "Estoque de itens do local" #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" -msgstr "" +msgstr "Relatório Teste do Item em Estoque" #: report/templates/report/inventree_test_report_base.html:97 msgid "Test Results" -msgstr "" +msgstr "Resultados do teste" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" -msgstr "" +msgstr "Teste" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" -msgstr "" +msgstr "Resultado" #: report/templates/report/inventree_test_report_base.html:130 msgid "Pass" -msgstr "" +msgstr "Aprovado" #: report/templates/report/inventree_test_report_base.html:132 msgid "Fail" -msgstr "" +msgstr "Não Aprovado" #: report/templates/report/inventree_test_report_base.html:139 msgid "No result (required)" -msgstr "" +msgstr "Sem resultado (obrigatório)" #: report/templates/report/inventree_test_report_base.html:141 msgid "No result" -msgstr "" +msgstr "Nenhum resultado" #: report/templates/report/inventree_test_report_base.html:154 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" -msgstr "" +msgstr "Itens instalados" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" -msgstr "" +msgstr "Série" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" -msgstr "" +msgstr "O arquivo não existe" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" -msgstr "" +msgstr "Arquivo de imagem não encontrado" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" -msgstr "" +msgstr "Tag part_image necessita de uma instância de Peça" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" -msgstr "" +msgstr "Tag company_image necessita de uma instância de Empresa" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" -msgstr "" +msgstr "ID do local" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" -msgstr "" +msgstr "Nome do Local" #: stock/admin.py:64 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" -msgstr "" +msgstr "Caminho do local" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" -msgstr "" +msgstr "ID do item estoque" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" -msgstr "" +msgstr "Código da situação" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" -msgstr "" +msgstr "Número da Peça do Fornecedor" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" -msgstr "" +msgstr "ID do Fornecedor" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" -msgstr "" +msgstr "Nome do Fornecedor" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" -msgstr "" +msgstr "ID Cliente" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" -msgstr "" +msgstr "Instalado em" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" -msgstr "" +msgstr "ID da Produção" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" -msgstr "" +msgstr "ID do pedido de venda" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" -msgstr "" +msgstr "ID do pedido de compra" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" -msgstr "" +msgstr "Revisão Necessária" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" -msgstr "" +msgstr "Excluir quando esgotado" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" -msgstr "" +msgstr "Data de validade" #: stock/api.py:540 templates/js/translated/table_filters.js:427 msgid "External Location" -msgstr "" +msgstr "Localização externa" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" -msgstr "" +msgstr "Árvore de Peças" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" -msgstr "" +msgstr "Data de validade antes" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" -msgstr "" +msgstr "Data de validade depois" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" -msgstr "" +msgstr "Inativo" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" -msgstr "" +msgstr "Quantidade obrigatória" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" -msgstr "" - -#: stock/api.py:873 -msgid "The given supplier part does not exist" -msgstr "" +msgstr "Uma peça válida deve ser fornecida" #: stock/api.py:883 +msgid "The given supplier part does not exist" +msgstr "A peça do fornecedor informado não existe" + +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" -msgstr "" +msgstr "A peça do fornecedor tem um tamanho de pacote definido, mas o item use_pack_size não foi definida" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" -msgstr "" +msgstr "Números de série não podem ser fornecidos para uma parte não rastreável" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" -msgstr "" +msgstr "Tipo de Local de estoque" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" -msgstr "" +msgstr "Tipos de Locais de estoque" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" -msgstr "" +msgstr "Ícone padrão para todos os locais que não tem um ícone (opcional)" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" -msgstr "" +msgstr "Localização do estoque" #: stock/models.py:125 stock/templates/stock/location.html:179 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:192 msgid "Stock Locations" -msgstr "" +msgstr "Locais de estoque" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" -msgstr "" +msgstr "Responsavel" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" -msgstr "" +msgstr "Selecionar Responsável" #: stock/models.py:166 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." -msgstr "" +msgstr "Os itens de estoque podem não estar diretamente localizados em um local de estoque estrutural, mas podem ser localizados em locais filhos." #: stock/models.py:173 templates/js/translated/stock.js:2752 #: templates/js/translated/table_filters.js:243 msgid "External" -msgstr "" +msgstr "Externo" #: stock/models.py:174 msgid "This is an external stock location" -msgstr "" +msgstr "Esta é uma localização de estoque externo" #: stock/models.py:180 templates/js/translated/stock.js:2761 #: templates/js/translated/table_filters.js:246 msgid "Location type" -msgstr "" +msgstr "Tipo de localização" #: stock/models.py:184 msgid "Stock location type of this location" -msgstr "" +msgstr "Tipo de Local de Estoque para esta locação" #: stock/models.py:253 msgid "You cannot make this stock location structural because some stock items are already located into it!" -msgstr "" +msgstr "Você não pode tornar este local do estoque estrutural, pois alguns itens de estoque já estão localizados nele!" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" -msgstr "" +msgstr "Os itens de estoque não podem estar localizados em locais de estoque estrutural!" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" -msgstr "" +msgstr "Item de estoque não pode ser criado para peças virtuais" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" -msgstr "" +msgstr "Tipo de peça('{self.supplier_part.part}') deve ser {self.part}" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" -msgstr "" +msgstr "A quantidade deve ser 1 para um item com número de série" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" -msgstr "" +msgstr "Número de série não pode ser definido se quantidade maior que 1" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" -msgstr "" +msgstr "O item não pode pertencer a si mesmo" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" -msgstr "" +msgstr "Item deve ter uma referência de produção se is_building=True" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" -msgstr "" +msgstr "Referência de produção não aponta ao mesmo objeto da peça" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" -msgstr "" +msgstr "Item de Estoque Parental" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" -msgstr "" +msgstr "Peça base" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" -msgstr "" +msgstr "Selecione uma peça do fornecedor correspondente para este item de estoque" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" -msgstr "" +msgstr "Onde está localizado este item de estoque?" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" -msgstr "" +msgstr "Embalagem deste item de estoque está armazenado em" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" -msgstr "" +msgstr "Este item está instalado em outro item?" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" -msgstr "" +msgstr "Número de série para este item" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" -msgstr "" +msgstr "Código do lote para este item de estoque" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" -msgstr "" +msgstr "Quantidade de Estoque" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" -msgstr "" +msgstr "Produção de Origem" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" -msgstr "" +msgstr "Produção para este item de estoque" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" -msgstr "" +msgstr "Consumido por" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" -msgstr "" +msgstr "Pedido de produção que consumiu este item de estoque" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" -msgstr "" - -#: stock/models.py:860 -msgid "Purchase order for this stock item" -msgstr "" +msgstr "Pedido de compra Fonte" #: stock/models.py:866 +msgid "Purchase order for this stock item" +msgstr "Pedido de Compra para este item de estoque" + +#: stock/models.py:872 msgid "Destination Sales Order" -msgstr "" +msgstr "Destino do Pedido de Venda" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" -msgstr "" +msgstr "Data de validade para o item de estoque. Estoque será considerado expirado após este dia" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" -msgstr "" +msgstr "Excluir quando esgotado" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" -msgstr "" +msgstr "Excluir este item de estoque quando o estoque for esgotado" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" -msgstr "" +msgstr "Preço de compra unitário único no momento da compra" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" -msgstr "" - -#: stock/models.py:1457 -msgid "Part is not set as trackable" -msgstr "" +msgstr "Convertido para peça" #: stock/models.py:1463 -msgid "Quantity must be integer" -msgstr "" +msgid "Part is not set as trackable" +msgstr "Peça não está definida como rastreável" -#: stock/models.py:1471 -#, python-brace-format -msgid "Quantity must not exceed available stock quantity ({self.quantity})" -msgstr "" +#: stock/models.py:1469 +msgid "Quantity must be integer" +msgstr "Quantidade deve ser inteira" #: stock/models.py:1477 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "Quantidade não deve exceder a quantidade em estoque ({self.quantity})" + +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" -msgstr "" +msgstr "Números de série devem ser uma lista de números inteiros" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" -msgstr "" +msgstr "A quantidade não corresponde aos números de série" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" -msgstr "" +msgstr "Números de série já existem" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" -msgstr "" - -#: stock/models.py:1561 -msgid "Stock item is installed in another item" -msgstr "" - -#: stock/models.py:1564 -msgid "Stock item contains other items" -msgstr "" +msgstr "Item em estoque foi reservado para um pedido" #: stock/models.py:1567 -msgid "Stock item has been assigned to a customer" -msgstr "" +msgid "Stock item is installed in another item" +msgstr "Item em estoque está instalado em outro item" #: stock/models.py:1570 -msgid "Stock item is currently in production" -msgstr "" +msgid "Stock item contains other items" +msgstr "item em estoque contem outro(s) items" #: stock/models.py:1573 +msgid "Stock item has been assigned to a customer" +msgstr "Item em estoque foi reservado para outro cliente" + +#: stock/models.py:1576 +msgid "Stock item is currently in production" +msgstr "Item no estoque está em produção no momento" + +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" -msgstr "" +msgstr "Itens de série não podem ser mesclados" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" -msgstr "" +msgstr "Item de estoque duplicado" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" -msgstr "" +msgstr "Itens de estoque devem se referir à mesma peça" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" -msgstr "" +msgstr "Itens de estoque devem se referir à mesma peça do fornecedor" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" -msgstr "" +msgstr "Códigos de estado do estoque devem corresponder" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" -msgstr "" +msgstr "Item do estoque não pode ser realocado se não houver estoque da mesma" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" -msgstr "" +msgstr "Observações de entrada" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" -msgstr "" +msgstr "Deve-se fornecer o valor desse teste" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" -msgstr "" +msgstr "O anexo deve ser enviado para este teste" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" -msgstr "" +msgstr "Nome de teste" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" -msgstr "" +msgstr "Resultado do teste" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" -msgstr "" +msgstr "Valor da saída do teste" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" -msgstr "" +msgstr "Anexo do resultado do teste" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" -msgstr "" +msgstr "Notas do teste" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" -msgstr "" +msgstr "Número de série é muito grande" #: stock/serializers.py:215 msgid "Use pack size when adding: the quantity defined is the number of packs" -msgstr "" +msgstr "Usar tamanho do pacote ao adicionar: a quantidade definida é o número de pacotes" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" -msgstr "" +msgstr "Preço de compra para este item de estoque, por unidade ou pacote" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" -msgstr "" +msgstr "Insira o número de itens de estoque para serializar" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" -msgstr "" +msgstr "Quantidade não deve exceder a quantidade disponível em estoque ({q})" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" -msgstr "" +msgstr "Inserir número de série para novos itens" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" -msgstr "" +msgstr "Local de destino do estoque" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" -msgstr "" +msgstr "Campo opcional de notas" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" -msgstr "" +msgstr "Números de série não podem ser atribuídos a esta peça" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" -msgstr "" +msgstr "Selecione o item de estoque para instalar" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" -msgstr "" +msgstr "Quantidade a Instalar" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" -msgstr "" +msgstr "Insira a quantidade de itens a instalar" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" -msgstr "" +msgstr "Adicionar nota de transação (opcional)" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" -msgstr "" +msgstr "A quantidade para instalar deve ser pelo menos 1" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" -msgstr "" +msgstr "Item de estoque indisponível" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" -msgstr "" +msgstr "Peça selecionada não está na Lista de Materiais" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" -msgstr "" +msgstr "Quantidade a instalar não deve exceder a quantidade disponível" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" -msgstr "" +msgstr "Local de destino para o item desinstalado" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" -msgstr "" +msgstr "Selecione peça para converter o item de estoque em" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" -msgstr "" +msgstr "Peça selecionada não é uma opção válida para conversão" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" -msgstr "" +msgstr "Não é possível converter o item de estoque com a Peça de Fornecedor atribuída" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" -msgstr "" +msgstr "Local de destino para item retornado" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" -msgstr "" +msgstr "Selecionar itens de estoque para mudar estados" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" -msgstr "" - -#: stock/serializers.py:973 -msgid "Part must be salable" -msgstr "" +msgstr "Nenhum item de estoque selecionado" #: stock/serializers.py:977 -msgid "Item is allocated to a sales order" -msgstr "" +msgid "Part must be salable" +msgstr "Parte deve ser comercializável" #: stock/serializers.py:981 +msgid "Item is allocated to a sales order" +msgstr "Item é alocado para um pedido de venda" + +#: stock/serializers.py:985 msgid "Item is allocated to a build order" -msgstr "" +msgstr "Item está alocado a um pedido de produção" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" -msgstr "" +msgstr "Cliente para atribuir itens de estoque" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" -msgstr "" +msgstr "A empresa selecionada não é um cliente" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" -msgstr "" +msgstr "Nodas atribuídas a estoque" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" -msgstr "" +msgstr "Uma lista de item de estoque deve ser providenciada" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" -msgstr "" +msgstr "Notas de fusão de estoque" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" -msgstr "" +msgstr "Permitir fornecedores divergentes" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" -msgstr "" +msgstr "Permitir a fusão de itens de estoque de fornecedores diferentes" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" -msgstr "" +msgstr "Permitir estado incompatível" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" -msgstr "" +msgstr "Permitir a fusão de itens de estoque com estado diferentes" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" +msgstr "Ao menos dois itens de estoque devem ser providenciados" + +#: stock/serializers.py:1201 +msgid "No Change" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1230 msgid "StockItem primary key value" -msgstr "" +msgstr "Valor da chave primária do Item Estoque" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" -msgstr "" +msgstr "Código de estado do item estoque" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" -msgstr "" +msgstr "Notas da transação de estoque" #: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" -msgstr "" +msgstr "Informações de Rastrrio de Estoque" #: stock/templates/stock/item.html:63 msgid "Child Stock Items" -msgstr "" +msgstr "Itens de Estoque Filhos" #: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" -msgstr "" +msgstr "Este item de estoque não possuí nenhum filho" #: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" -msgstr "" +msgstr "Dados de teste" #: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" -msgstr "" +msgstr "Relatório do teste" #: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" -msgstr "" +msgstr "Excluir dados de teste" #: stock/templates/stock/item.html:93 msgid "Add Test Data" -msgstr "" +msgstr "Adicionar dados de teste" #: stock/templates/stock/item.html:125 msgid "Stock Item Notes" -msgstr "" +msgstr "Notas de Item Estoque" #: stock/templates/stock/item.html:140 msgid "Installed Stock Items" -msgstr "" +msgstr "Itens de Estoque Instalados" #: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" -msgstr "" +msgstr "Instalar Item de Estoque" #: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" -msgstr "" +msgstr "Excluir todos os resultados de teste deste item de estoque" #: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" -msgstr "" +msgstr "Adicionar Resultado de Teste" #: stock/templates/stock/item_base.html:33 msgid "Locate stock item" -msgstr "" +msgstr "Localizar item de estoque" #: stock/templates/stock/item_base.html:51 msgid "Scan to Location" -msgstr "" +msgstr "Escanear a Localização" #: stock/templates/stock/item_base.html:59 #: stock/templates/stock/location.html:70 #: templates/js/translated/filters.js:431 msgid "Printing actions" -msgstr "" +msgstr "Ações de Impressão" #: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" -msgstr "" +msgstr "Ações de ajuste de estoque" #: stock/templates/stock/item_base.html:79 #: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" -msgstr "" +msgstr "Contagem de estoque" #: stock/templates/stock/item_base.html:81 #: templates/js/translated/stock.js:1774 msgid "Add stock" -msgstr "" +msgstr "Adicionar estoque" #: stock/templates/stock/item_base.html:82 #: templates/js/translated/stock.js:1783 msgid "Remove stock" -msgstr "" +msgstr "Remover estoque" #: stock/templates/stock/item_base.html:85 msgid "Serialize stock" -msgstr "" +msgstr "Serializar estoque" #: stock/templates/stock/item_base.html:88 #: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" -msgstr "" +msgstr "Transferir estoque" #: stock/templates/stock/item_base.html:91 #: templates/js/translated/stock.js:1855 msgid "Assign to customer" -msgstr "" +msgstr "Disponibilizar para o cliente" #: stock/templates/stock/item_base.html:94 msgid "Return to stock" -msgstr "" +msgstr "Devolver ao estoque" #: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" -msgstr "" +msgstr "Desinstalar o item do estoque" #: stock/templates/stock/item_base.html:97 msgid "Uninstall" -msgstr "" +msgstr "Desinstalar" #: stock/templates/stock/item_base.html:101 msgid "Install stock item" -msgstr "" +msgstr "Instalar item do estoque" #: stock/templates/stock/item_base.html:101 msgid "Install" -msgstr "" +msgstr "Instalar" #: stock/templates/stock/item_base.html:115 msgid "Convert to variant" -msgstr "" +msgstr "Converter em variante" #: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" -msgstr "" +msgstr "Duplicar item" #: stock/templates/stock/item_base.html:120 msgid "Edit stock item" -msgstr "" +msgstr "Editar item de estoque" #: stock/templates/stock/item_base.html:123 msgid "Delete stock item" -msgstr "" +msgstr "Excluir item de estoque" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" -msgstr "" +msgstr "Produção" #: stock/templates/stock/item_base.html:193 msgid "Parent Item" -msgstr "" +msgstr "Item Primário" #: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" -msgstr "" +msgstr "Nenhum fabricante definido" #: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." -msgstr "" +msgstr "Você não está autorizado a editar esse item." #: stock/templates/stock/item_base.html:252 #: stock/templates/stock/location.html:149 msgid "Read only" -msgstr "" +msgstr "Somente leitura" #: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" -msgstr "" +msgstr "Este item não está disponível no estoque" #: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." -msgstr "" +msgstr "Este item de estoque está em produção e não pode ser editado." #: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." -msgstr "" +msgstr "Edite este item usando o formulário de construçao." #: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" -msgstr "" +msgstr "Este item de estoque está alocado a um pedido de venda" #: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" -msgstr "" +msgstr "Este item de estoque está alocado a um pedido de produção" #: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" -msgstr "" +msgstr "Este item de estoque é serializado. Tem um único número de série e a quantidade não pode ser ajustada" #: stock/templates/stock/item_base.html:317 msgid "previous page" -msgstr "" +msgstr "página anterior" #: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" -msgstr "" +msgstr "Navegar para o número de série anterior" #: stock/templates/stock/item_base.html:326 msgid "next page" -msgstr "" +msgstr "próxima página" #: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" -msgstr "" +msgstr "Navegar para o próximo número de série" #: stock/templates/stock/item_base.html:340 msgid "Available Quantity" -msgstr "" +msgstr "Quantidade Disponível" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" -msgstr "" +msgstr "Nenhum local definido" #: stock/templates/stock/item_base.html:413 msgid "Tests" -msgstr "" +msgstr "Testes" #: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" -msgstr "" +msgstr "Este item de estoque não passou todos os testes necessários" #: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" -msgstr "" +msgstr "Este Item do Estoque expirou em %(item.expiry_date)s" #: stock/templates/stock/item_base.html:437 #: templates/js/translated/table_filters.js:435 users/models.py:163 msgid "Expired" -msgstr "" +msgstr "Expirado" #: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" -msgstr "" +msgstr "Este Item do Estoque expira em %(item.expiry_date)s" #: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" -msgstr "" +msgstr "Nenhum balanço feito" #: stock/templates/stock/item_base.html:507 #: templates/js/translated/stock.js:1922 msgid "stock item" -msgstr "" +msgstr "item de estoque" #: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" -msgstr "" +msgstr "Editar Situação do Estoque" #: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" -msgstr "" +msgstr "QR Code do Item de Estoque" #: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" -msgstr "" +msgstr "Vincular Código de barras ao item de estoque" #: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." -msgstr "" +msgstr "Selecione uma das peças variantes listada abaixo." #: stock/templates/stock/item_base.html:619 msgid "Warning" -msgstr "" +msgstr "Atenção" #: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" -msgstr "" +msgstr "Esta ação não pode ser facilmente desfeita" #: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" -msgstr "" +msgstr "Converter Item de Estoque" #: stock/templates/stock/item_base.html:662 msgid "Return to Stock" -msgstr "" +msgstr "Retornar ao Estoque" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." -msgstr "" +msgstr "Criar itens serializados deste item de estoque." #: stock/templates/stock/item_serialize.html:7 msgid "Select quantity to serialize, and unique serial numbers." -msgstr "" +msgstr "Selecione a quantidade para serializar e números de série único." #: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" -msgstr "" +msgstr "Fazer balanço para o estoque deste local" #: stock/templates/stock/location.html:45 msgid "Locate stock location" -msgstr "" +msgstr "Localizar o local de estoque" #: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" -msgstr "" +msgstr "Buscar itens de estoque neste local" #: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" -msgstr "" +msgstr "Buscar nos Itens de Estoque" #: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" -msgstr "" +msgstr "Buscar recipiente do estoque neste local" #: stock/templates/stock/location.html:64 msgid "Scan In Container" -msgstr "" +msgstr "Buscar no recipiente" #: stock/templates/stock/location.html:75 msgid "Print Location Report" -msgstr "" +msgstr "Imprimir Relatório da Localização" #: stock/templates/stock/location.html:104 msgid "Location actions" -msgstr "" +msgstr "Ações de Locais" #: stock/templates/stock/location.html:106 msgid "Edit location" -msgstr "" +msgstr "Editar Local" #: stock/templates/stock/location.html:108 msgid "Delete location" -msgstr "" +msgstr "Excluir Local" #: stock/templates/stock/location.html:138 msgid "Top level stock location" -msgstr "" +msgstr "Local de estoque de alto nível" #: stock/templates/stock/location.html:144 msgid "Location Owner" -msgstr "" +msgstr "Dono do Local" #: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." -msgstr "" +msgstr "Você não está na lista de donos deste local. Este local de estoque não pode ser editado." #: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" -msgstr "" +msgstr "Sub-locais" #: stock/templates/stock/location.html:217 msgid "Create new stock location" -msgstr "" +msgstr "Criar novo local de estoque" #: stock/templates/stock/location.html:218 msgid "New Location" -msgstr "" +msgstr "Novo local" #: stock/templates/stock/location.html:289 #: templates/js/translated/stock.js:2543 msgid "stock location" -msgstr "" +msgstr "local de estoque" #: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" -msgstr "" +msgstr "Escaneado o recipiente de estoque neste local" #: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" -msgstr "" +msgstr "Código QR do Local de Estoque" #: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" -msgstr "" +msgstr "Ligar Código de barras ao Local de Estoque" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." -msgstr "" +msgstr "Carregando..." #: stock/templates/stock/stock_sidebar.html:5 msgid "Stock Tracking" -msgstr "" +msgstr "Rastreamento de estoque" #: stock/templates/stock/stock_sidebar.html:8 msgid "Allocations" -msgstr "" +msgstr "Alocações" #: stock/templates/stock/stock_sidebar.html:20 msgid "Child Items" -msgstr "" +msgstr "Itens Filhos" #: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7 msgid "Permission Denied" -msgstr "" +msgstr "Permissão Negada" #: templates/403.html:15 msgid "You do not have permission to view this page." -msgstr "" +msgstr "Você não tem permissão para visualizar esta página." #: templates/403_csrf.html:11 msgid "Authentication Failure" -msgstr "" +msgstr "Falha na Autenticação" #: templates/403_csrf.html:14 msgid "You have been logged out from InvenTree." -msgstr "" +msgstr "Você foi desconectado do InvenTree." #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 #: templates/navbar.html:150 msgid "Login" -msgstr "" +msgstr "Iniciar sessão" #: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" -msgstr "" +msgstr "Página não encontrada" #: templates/404.html:15 msgid "The requested page does not exist" -msgstr "" +msgstr "A página solicitada não existe" #: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" -msgstr "" +msgstr "Erro interno do servidor" #: templates/500.html:15 #, python-format msgid "The %(inventree_title)s server raised an internal error" -msgstr "" +msgstr "O servidor %(inventree_title)s gerou um erro interno" #: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" -msgstr "" +msgstr "Consulte o login de erro na interface admin para mais detalhes" #: templates/503.html:11 templates/503.html:33 msgid "Site is in Maintenance" -msgstr "" +msgstr "Site está em Manutenção" #: templates/503.html:39 msgid "The site is currently in maintenance and should be up again soon!" -msgstr "" +msgstr "O site está atualmente em manutenção e estará de volta em breve!" #: templates/InvenTree/index.html:7 msgid "Index" -msgstr "" +msgstr "Índice" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "" +msgstr "Peças Inscritas" #: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "" +msgstr "Categorias Inscritas" #: templates/InvenTree/index.html:62 msgid "Latest Parts" -msgstr "" +msgstr "Peças Recentes" #: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" -msgstr "" +msgstr "BOM Aguardando Validação" #: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "" +msgstr "Atualizados Recentemente" #: templates/InvenTree/index.html:134 msgid "Depleted Stock" -msgstr "" +msgstr "Estoque Esgotado" #: templates/InvenTree/index.html:148 msgid "Required for Build Orders" -msgstr "" +msgstr "Necessário para pedidos de produção" #: templates/InvenTree/index.html:156 msgid "Expired Stock" -msgstr "" +msgstr "Estoque Expirado" #: templates/InvenTree/index.html:172 msgid "Stale Stock" -msgstr "" +msgstr "Estoque Parado" #: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "" +msgstr "Pedido de Produção em Progresso" #: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "" +msgstr "Pedido de Produção Vencido" #: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" -msgstr "" +msgstr "Pedidos de Compra Pendentes" #: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" -msgstr "" +msgstr "Pedidos de Compra Vencidos" #: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" -msgstr "" +msgstr "Pedidos de Venda Pendentes" #: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" -msgstr "" +msgstr "Pedidos de Venda Vencidos" #: templates/InvenTree/index.html:299 msgid "InvenTree News" -msgstr "" +msgstr "Notícias do InvenTree" #: templates/InvenTree/index.html:301 msgid "Current News" -msgstr "" +msgstr "Notícias Atuais" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" -msgstr "" +msgstr "Histórico de Notificações" #: templates/InvenTree/notifications/history.html:13 #: templates/InvenTree/notifications/history.html:14 #: templates/InvenTree/notifications/notifications.html:75 msgid "Delete Notifications" -msgstr "" +msgstr "Apagar notificações" #: templates/InvenTree/notifications/inbox.html:9 msgid "Pending Notifications" -msgstr "" +msgstr "Notificações Pendentes" #: templates/InvenTree/notifications/inbox.html:13 #: templates/InvenTree/notifications/inbox.html:14 msgid "Mark all as read" -msgstr "" +msgstr "Marcar tudo como lido" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 #: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" -msgstr "" +msgstr "Notificações" #: templates/InvenTree/notifications/notifications.html:38 msgid "No unread notifications found" -msgstr "" +msgstr "Nenhuma notificação pendente encontrada" #: templates/InvenTree/notifications/notifications.html:58 msgid "No notification history found" -msgstr "" +msgstr "Sem histórico de notificação encontrado" #: templates/InvenTree/notifications/notifications.html:65 msgid "Delete all read notifications" -msgstr "" +msgstr "Excluir todas as notificações lidas" #: templates/InvenTree/notifications/notifications.html:89 #: templates/js/translated/notification.js:85 msgid "Delete Notification" -msgstr "" +msgstr "Apagar Notificação" #: templates/InvenTree/notifications/sidebar.html:8 msgid "Inbox" -msgstr "" +msgstr "Caixa de entrada" #: templates/InvenTree/notifications/sidebar.html:10 msgid "History" -msgstr "" +msgstr "Histórico" #: templates/InvenTree/search.html:8 msgid "Search Results" -msgstr "" +msgstr "Resultados da busca" #: templates/InvenTree/settings/barcode.html:8 msgid "Barcode Settings" -msgstr "" +msgstr "Definições do código de barras" #: templates/InvenTree/settings/build.html:8 msgid "Build Order Settings" -msgstr "" +msgstr "Configurações do Pedido de Produção" #: templates/InvenTree/settings/category.html:7 msgid "Category Settings" -msgstr "" +msgstr "Configurações de categoria" #: templates/InvenTree/settings/global.html:8 msgid "Server Settings" -msgstr "" +msgstr "Configurações do servidor" #: templates/InvenTree/settings/label.html:8 #: templates/InvenTree/settings/user_labels.html:9 msgid "Label Settings" -msgstr "" +msgstr "Configurações de etiqueta" #: templates/InvenTree/settings/login.html:8 msgid "Login Settings" -msgstr "" +msgstr "Configurações de Acesso" #: templates/InvenTree/settings/login.html:15 msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!" -msgstr "" +msgstr "O e-mail de saída não foi configurado. Alguns recursos de acesso e inscrição podem não funcionar corretamente!" #: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5 #: templates/socialaccount/signup.html:5 msgid "Signup" -msgstr "" +msgstr "Registrar-se" #: templates/InvenTree/settings/login.html:34 msgid "Single Sign On" -msgstr "" +msgstr "Início de sessão única" #: templates/InvenTree/settings/mixins/settings.html:5 #: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" -msgstr "" +msgstr "Configurações" #: templates/InvenTree/settings/mixins/urls.html:5 msgid "URLs" -msgstr "" +msgstr "URLs" #: templates/InvenTree/settings/mixins/urls.html:8 #, python-format msgid "The Base-URL for this plugin is %(base)s." -msgstr "" +msgstr "A Base-URL para esta extensão é %(base)s." #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "URL" +msgstr "Endereço da URL" #: templates/InvenTree/settings/mixins/urls.html:23 msgid "Open in new tab" -msgstr "" +msgstr "Abrir em uma nova aba" #: templates/InvenTree/settings/notifications.html:9 #: templates/InvenTree/settings/user_notifications.html:9 msgid "Notification Settings" -msgstr "" +msgstr "Configurações de Notificação" #: templates/InvenTree/settings/notifications.html:18 msgid "Slug" -msgstr "" +msgstr "Slug" #: templates/InvenTree/settings/part.html:7 msgid "Part Settings" -msgstr "" +msgstr "Configurações de Peça" #: templates/InvenTree/settings/part.html:42 msgid "Part Import" -msgstr "" +msgstr "Peça importada" #: templates/InvenTree/settings/part.html:46 msgid "Import Part" -msgstr "" +msgstr "Importar Peça" #: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" -msgstr "" +msgstr "Modelo de Parâmetro da Peça" #: templates/InvenTree/settings/part_stocktake.html:7 msgid "Stocktake Settings" -msgstr "" +msgstr "Configurações de Balanço" #: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" -msgstr "" +msgstr "Relatório de Balanço" #: templates/InvenTree/settings/physical_units.html:8 #: templates/InvenTree/settings/sidebar.html:35 msgid "Physical Units" -msgstr "" +msgstr "Unidades Físicas" #: templates/InvenTree/settings/physical_units.html:12 msgid "Add Unit" -msgstr "" +msgstr "Adicionar Unidade" #: templates/InvenTree/settings/plugin.html:9 #: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" -msgstr "" +msgstr "Configurações da Extensão" #: templates/InvenTree/settings/plugin.html:15 msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." -msgstr "" +msgstr "Alterar as configurações abaixo requer que você reinicie imediatamente o servidor. Não altere isso enquanto estiver em uso." #: templates/InvenTree/settings/plugin.html:35 #: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" -msgstr "" +msgstr "Extensões" #: templates/InvenTree/settings/plugin.html:41 #: templates/InvenTree/settings/plugin.html:42 #: templates/js/translated/plugin.js:151 msgid "Install Plugin" -msgstr "" +msgstr "Instalar extensão" #: templates/InvenTree/settings/plugin.html:44 #: templates/InvenTree/settings/plugin.html:45 #: templates/js/translated/plugin.js:224 msgid "Reload Plugins" -msgstr "" +msgstr "Recarregar plugins" #: templates/InvenTree/settings/plugin.html:55 msgid "External plugins are not enabled for this InvenTree installation" -msgstr "" +msgstr "Extensões externos não estão ativados para esta instalação do InvenTree" #: templates/InvenTree/settings/plugin.html:70 msgid "Plugin Error Stack" -msgstr "" +msgstr "Erro da Pilha da Extensão" #: templates/InvenTree/settings/plugin.html:79 msgid "Stage" -msgstr "" +msgstr "Fase" #: templates/InvenTree/settings/plugin.html:81 #: templates/js/translated/notification.js:76 msgid "Message" -msgstr "" +msgstr "Mensagem" #: templates/InvenTree/settings/plugin_settings.html:16 msgid "Plugin information" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" +msgstr "Informações da extensões" #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" -msgstr "" +msgstr "nenhuma informação de versão fornecida" #: templates/InvenTree/settings/plugin_settings.html:61 msgid "License" -msgstr "" +msgstr "Licença" #: templates/InvenTree/settings/plugin_settings.html:70 msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running." -msgstr "" +msgstr "A informação de código é retirada do último git commit para esta extensão. Pode não refletir números de versão ou informações oficiais, mas sim o código em execução." #: templates/InvenTree/settings/plugin_settings.html:76 msgid "Package information" -msgstr "" +msgstr "Informações do pacote" #: templates/InvenTree/settings/plugin_settings.html:82 msgid "Installation method" -msgstr "" +msgstr "Método de instalação" #: templates/InvenTree/settings/plugin_settings.html:85 msgid "This plugin was installed as a package" -msgstr "" +msgstr "Esta extensão foi instalada como um pacote" #: templates/InvenTree/settings/plugin_settings.html:87 msgid "This plugin was found in a local server path" -msgstr "" +msgstr "Esta extensão foi encontrada no caminho do servidor local" #: templates/InvenTree/settings/plugin_settings.html:93 msgid "Installation path" -msgstr "" +msgstr "Caminho de instalação" #: templates/InvenTree/settings/plugin_settings.html:100 #: templates/js/translated/plugin.js:68 #: templates/js/translated/table_filters.js:492 msgid "Builtin" -msgstr "" +msgstr "Embutido" #: templates/InvenTree/settings/plugin_settings.html:101 msgid "This is a builtin plugin which cannot be disabled" -msgstr "" +msgstr "Esse é uma extensão embutida que não pode ser desativado" #: templates/InvenTree/settings/plugin_settings.html:107 #: templates/js/translated/plugin.js:72 #: templates/js/translated/table_filters.js:496 msgid "Sample" -msgstr "" +msgstr "Amostra" #: templates/InvenTree/settings/plugin_settings.html:108 msgid "This is a sample plugin" -msgstr "" +msgstr "Este é um plugin de exemplo" #: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" -msgstr "" +msgstr "Autor do Commit" #: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" -msgstr "" +msgstr "Data do commit" #: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" -msgstr "" +msgstr "Hash do Commit" #: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" -msgstr "" +msgstr "Mensagem do Commit" #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" -msgstr "" +msgstr "Configurações do Pedido de Compra" #: templates/InvenTree/settings/pricing.html:7 msgid "Pricing Settings" -msgstr "" +msgstr "Configurações de preços" #: templates/InvenTree/settings/pricing.html:34 msgid "Exchange Rates" -msgstr "" +msgstr "Taxas de Câmbio" #: templates/InvenTree/settings/pricing.html:38 msgid "Update Now" -msgstr "" +msgstr "Atualizar agora" #: templates/InvenTree/settings/pricing.html:46 #: templates/InvenTree/settings/pricing.html:50 msgid "Last Update" -msgstr "" +msgstr "Última Atualização" #: templates/InvenTree/settings/pricing.html:50 msgid "Never" -msgstr "" +msgstr "Nunca" #: templates/InvenTree/settings/project_codes.html:8 msgid "Project Code Settings" -msgstr "" +msgstr "Configurações de código do projeto" #: templates/InvenTree/settings/project_codes.html:21 #: templates/InvenTree/settings/sidebar.html:33 msgid "Project Codes" -msgstr "" +msgstr "Códigos de Projeto" #: templates/InvenTree/settings/project_codes.html:25 #: templates/InvenTree/settings/settings_staff_js.html:216 msgid "New Project Code" -msgstr "" +msgstr "Novo Código de Projeto" #: templates/InvenTree/settings/report.html:8 #: templates/InvenTree/settings/user_reporting.html:9 msgid "Report Settings" -msgstr "" +msgstr "Configurações de relatórios" #: templates/InvenTree/settings/returns.html:7 msgid "Return Order Settings" -msgstr "" +msgstr "Configurações de Pedido de Devolução" #: templates/InvenTree/settings/setting.html:31 msgid "No value set" -msgstr "" +msgstr "Nenhum valor definido" #: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" -msgstr "" +msgstr "Editar configurações" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" -msgstr "" +msgstr "Editar Configurações do Plug-in" #: templates/InvenTree/settings/settings_js.html:60 msgid "Edit Notification Setting" -msgstr "" +msgstr "Editar Configurações de Notificação" #: templates/InvenTree/settings/settings_js.html:63 msgid "Edit Global Setting" -msgstr "" +msgstr "Editar Configurações Globais" #: templates/InvenTree/settings/settings_js.html:65 msgid "Edit User Setting" -msgstr "" +msgstr "Editar Configurações de Usuário" #: templates/InvenTree/settings/settings_staff_js.html:49 msgid "Rate" -msgstr "" +msgstr "Taxa" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" -msgstr "" +msgstr "Excluir" #: templates/InvenTree/settings/settings_staff_js.html:95 msgid "Edit Custom Unit" -msgstr "" +msgstr "Editar Unidade Personalizada" #: templates/InvenTree/settings/settings_staff_js.html:110 msgid "Delete Custom Unit" -msgstr "" +msgstr "Excluir Unidade Personalizada" #: templates/InvenTree/settings/settings_staff_js.html:124 msgid "New Custom Unit" -msgstr "" +msgstr "Nova Unidade Personalizada" #: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" -msgstr "" +msgstr "Nenhum código de projetos encontrado" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" -msgstr "" +msgstr "grupo" #: templates/InvenTree/settings/settings_staff_js.html:175 #: templates/InvenTree/settings/settings_staff_js.html:189 msgid "Edit Project Code" -msgstr "" +msgstr "Editar Código do Projeto" #: templates/InvenTree/settings/settings_staff_js.html:176 #: templates/InvenTree/settings/settings_staff_js.html:203 msgid "Delete Project Code" -msgstr "" +msgstr "Excluir Código do Projeto" #: templates/InvenTree/settings/settings_staff_js.html:285 msgid "No category parameter templates found" -msgstr "" +msgstr "Nenhum modelo de parâmetro de categoria encontrado" #: templates/InvenTree/settings/settings_staff_js.html:308 #: templates/js/translated/part.js:1645 msgid "Edit Template" -msgstr "" +msgstr "Editar Modelo" #: templates/InvenTree/settings/settings_staff_js.html:309 #: templates/js/translated/part.js:1646 msgid "Delete Template" -msgstr "" +msgstr "Excluir Modelo" #: templates/InvenTree/settings/settings_staff_js.html:326 msgid "Edit Category Parameter Template" -msgstr "" +msgstr "Editar Parâmetros dos Modelos de Categoria" #: templates/InvenTree/settings/settings_staff_js.html:353 msgid "Delete Category Parameter Template" -msgstr "" +msgstr "Excluir Parâmetros dos Modelos de Categoria" #: templates/InvenTree/settings/settings_staff_js.html:388 msgid "Create Category Parameter Template" -msgstr "" +msgstr "Criar Modelo de Parâmetro de Categoria" #: templates/InvenTree/settings/settings_staff_js.html:418 msgid "Create Part Parameter Template" -msgstr "" +msgstr "Criar Modelo de Parâmetro de Peça" #: templates/InvenTree/settings/settings_staff_js.html:440 msgid "No stock location types found" -msgstr "" +msgstr "Nenhum tipo de local de estoque encontrado" #: templates/InvenTree/settings/settings_staff_js.html:461 msgid "Location count" -msgstr "" +msgstr "Contagem Localizações" #: templates/InvenTree/settings/settings_staff_js.html:466 #: templates/InvenTree/settings/settings_staff_js.html:480 msgid "Edit Location Type" -msgstr "" +msgstr "Editar Tipo de Localização" #: templates/InvenTree/settings/settings_staff_js.html:467 msgid "Delete Location type" -msgstr "" +msgstr "Apagar Tipo de localização" #: templates/InvenTree/settings/settings_staff_js.html:490 msgid "Delete Location Type" -msgstr "" +msgstr "Apagar Tipo de Localização" #: templates/InvenTree/settings/settings_staff_js.html:500 #: templates/InvenTree/settings/stock.html:35 msgid "New Location Type" -msgstr "" +msgstr "Novo Tipo de localização" #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" -msgstr "" +msgstr "Configurações de usuário" #: templates/InvenTree/settings/sidebar.html:9 msgid "Account" -msgstr "" +msgstr "Conta" #: templates/InvenTree/settings/sidebar.html:11 msgid "Display" -msgstr "" +msgstr "Visualização" #: templates/InvenTree/settings/sidebar.html:13 msgid "Home Page" -msgstr "" +msgstr "Página Inicial" #: templates/InvenTree/settings/sidebar.html:15 #: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543 #: templates/navbar.html:107 templates/search.html:8 #: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" -msgstr "" +msgstr "Buscar" #: templates/InvenTree/settings/sidebar.html:19 #: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" -msgstr "" +msgstr "Reportar" #: templates/InvenTree/settings/sidebar.html:24 msgid "Global Settings" -msgstr "" +msgstr "Configurações globais" #: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9 msgid "Server" -msgstr "" +msgstr "Servidor" #: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" -msgstr "" +msgstr "Etiquetas" #: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" -msgstr "" +msgstr "Categorias" #: templates/InvenTree/settings/so.html:7 msgid "Sales Order Settings" -msgstr "" +msgstr "Configurações do Pedido de Venda" #: templates/InvenTree/settings/stock.html:7 msgid "Stock Settings" -msgstr "" +msgstr "Configurações de Estoque" #: templates/InvenTree/settings/stock.html:31 msgid "Stock Location Types" -msgstr "" +msgstr "Tipos de Locais de estoque" #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" -msgstr "" +msgstr "Configurações de Conta" #: templates/InvenTree/settings/user.html:19 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 msgid "Change Password" -msgstr "" +msgstr "Alterar Senha" #: templates/InvenTree/settings/user.html:33 msgid "Username" -msgstr "" +msgstr "Nome de usuário" #: templates/InvenTree/settings/user.html:37 msgid "First Name" -msgstr "" +msgstr "Primeiro Nome" #: templates/InvenTree/settings/user.html:41 msgid "Last Name" -msgstr "" +msgstr "Sobrenome" #: templates/InvenTree/settings/user.html:55 msgid "The following email addresses are associated with your account:" -msgstr "" +msgstr "Os seguintes endereços de e-mail estão associados à sua conta:" #: templates/InvenTree/settings/user.html:76 msgid "Verified" -msgstr "" +msgstr "Verificado" #: templates/InvenTree/settings/user.html:78 msgid "Unverified" -msgstr "" +msgstr "Não verificado" #: templates/InvenTree/settings/user.html:80 #: templates/js/translated/company.js:947 msgid "Primary" -msgstr "" +msgstr "Principal" #: templates/InvenTree/settings/user.html:86 msgid "Make Primary" -msgstr "" +msgstr "Tornar principal" #: templates/InvenTree/settings/user.html:87 msgid "Re-send Verification" -msgstr "" +msgstr "Reenviar verificação" #: templates/InvenTree/settings/user.html:96 msgid "Warning:" -msgstr "" +msgstr "Atenção:" #: templates/InvenTree/settings/user.html:97 msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc." -msgstr "" +msgstr "Atualmente, você não tem nenhum endereço de e-mail configurado. Você deveria realmente adicionar um endereço de e-mail para receber notificações, redefinir sua senha, etc." #: templates/InvenTree/settings/user.html:105 msgid "Add Email Address" -msgstr "" +msgstr "Adicionar endereço de E-mail" #: templates/InvenTree/settings/user.html:110 msgid "Add Email" -msgstr "" +msgstr "Adicionar e-mail" #: templates/InvenTree/settings/user.html:120 msgid "Multifactor" -msgstr "" +msgstr "Multifator" #: templates/InvenTree/settings/user.html:125 msgid "You have these factors available:" -msgstr "" +msgstr "Você tem estes fatores disponíveis:" #: templates/InvenTree/settings/user.html:135 msgid "TOTP" -msgstr "" +msgstr "TOTP" #: templates/InvenTree/settings/user.html:141 msgid "Static" -msgstr "" +msgstr "Estático" #: templates/InvenTree/settings/user.html:150 msgid "Multifactor authentication is not configured for your account" -msgstr "" +msgstr "A autenticação de múltiplos fatores não está configurada para sua conta" #: templates/InvenTree/settings/user.html:157 msgid "Change factors" -msgstr "" +msgstr "Alterar fatores" #: templates/InvenTree/settings/user.html:158 msgid "Setup multifactor" -msgstr "" +msgstr "Configurar multifator" #: templates/InvenTree/settings/user.html:160 msgid "Remove multifactor" -msgstr "" +msgstr "Remover multifator" #: templates/InvenTree/settings/user.html:168 msgid "Active Sessions" -msgstr "" +msgstr "Sessões Ativas" #: templates/InvenTree/settings/user.html:174 msgid "Log out active sessions (except this one)" -msgstr "" +msgstr "Encerrar sessões ativas (exceto esta)" #: templates/InvenTree/settings/user.html:175 msgid "Log Out Active Sessions" -msgstr "" +msgstr "Encerrar Sessões Ativas" #: templates/InvenTree/settings/user.html:184 msgid "unknown on unknown" -msgstr "" +msgstr "desconhecido em desconhecido" #: templates/InvenTree/settings/user.html:185 msgid "unknown" -msgstr "" +msgstr "desconhecido" #: templates/InvenTree/settings/user.html:189 msgid "IP Address" -msgstr "" +msgstr "Endereço IP" #: templates/InvenTree/settings/user.html:190 msgid "Device" -msgstr "" +msgstr "Dispositivo" #: templates/InvenTree/settings/user.html:191 msgid "Last Activity" -msgstr "" +msgstr "Última Atividade" #: templates/InvenTree/settings/user.html:204 #, python-format msgid "%(time)s ago (this session)" -msgstr "" +msgstr "%(time)s atrás (esta sessão)" #: templates/InvenTree/settings/user.html:206 #, python-format msgid "%(time)s ago" -msgstr "" +msgstr "%(time)s atrás" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "" +msgstr "Você realmente deseja remover o endereço de e-mail selecionado?" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" -msgstr "" +msgstr "Definições de Exibição" #: templates/InvenTree/settings/user_display.html:29 msgid "Theme Settings" -msgstr "" +msgstr "Configurações de tema" #: templates/InvenTree/settings/user_display.html:39 msgid "Select theme" -msgstr "" +msgstr "Selecionar tema" #: templates/InvenTree/settings/user_display.html:50 msgid "Set Theme" -msgstr "" +msgstr "Definir Tema" #: templates/InvenTree/settings/user_display.html:58 msgid "Language Settings" -msgstr "" +msgstr "Configurações de idioma" #: templates/InvenTree/settings/user_display.html:67 msgid "Select language" -msgstr "" +msgstr "Selecionar idioma" #: templates/InvenTree/settings/user_display.html:83 #, python-format msgid "%(lang_translated)s%% translated" -msgstr "" +msgstr "%(lang_translated)s%% traduzido" #: templates/InvenTree/settings/user_display.html:85 msgid "No translations available" -msgstr "" +msgstr "Não há traduções disponíveis" #: templates/InvenTree/settings/user_display.html:92 msgid "Set Language" -msgstr "" +msgstr "Definir Idioma" #: templates/InvenTree/settings/user_display.html:95 msgid "Some languages are not complete" -msgstr "" +msgstr "Alguns idiomas não estão completos" #: templates/InvenTree/settings/user_display.html:97 msgid "Show only sufficient" -msgstr "" +msgstr "Mostrar apenas o suficiente" #: templates/InvenTree/settings/user_display.html:99 msgid "and hidden." -msgstr "" +msgstr "e oculto." #: templates/InvenTree/settings/user_display.html:99 msgid "Show them too" -msgstr "" +msgstr "Mostrar outros também" #: templates/InvenTree/settings/user_display.html:106 msgid "Help the translation efforts!" -msgstr "" +msgstr "Ajude os esforços de tradução!" #: templates/InvenTree/settings/user_display.html:107 msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." -msgstr "" +msgstr "A tradução nativa do aplicativo web é contribuição da comunidade pelo crowdin. Contribuições são encorajadas e bem vindas." #: templates/InvenTree/settings/user_display.html:108 msgid "InvenTree Translation Project" -msgstr "" +msgstr "Projeto de Tradução do InvenTree" #: templates/InvenTree/settings/user_homepage.html:9 msgid "Home Page Settings" -msgstr "" +msgstr "Configuração da Página Inicial" #: templates/InvenTree/settings/user_search.html:9 msgid "Search Settings" -msgstr "" +msgstr "Configurações de Busca" #: templates/InvenTree/settings/user_sso.html:9 msgid "Single Sign On Accounts" -msgstr "" +msgstr "Contas de Login Único" #: templates/InvenTree/settings/user_sso.html:16 msgid "You can sign in to your account using any of the following third party accounts:" -msgstr "" +msgstr "Você pode entrar na sua conta usando qualquer uma das seguintes contas de terceiros:" #: templates/InvenTree/settings/user_sso.html:52 msgid "There are no social network accounts connected to this account." -msgstr "" +msgstr "Não há nenhuma rede social conectadas a essa conta." #: templates/InvenTree/settings/user_sso.html:58 msgid "Add SSO Account" -msgstr "" +msgstr "Adicionar conta SSO" #: templates/InvenTree/settings/user_sso.html:67 msgid "Single Sign On is not enabled for this server" -msgstr "" +msgstr "Acesso único não está habilitado para este servidor" #: templates/about.html:9 msgid "InvenTree Version" -msgstr "" +msgstr "Versão do InvenTree" #: templates/about.html:14 msgid "Development Version" -msgstr "" +msgstr "Versão de desenvolvimento" #: templates/about.html:17 msgid "Up to Date" -msgstr "" +msgstr "Atualizado" #: templates/about.html:19 msgid "Update Available" -msgstr "" +msgstr "Atualização disponível" #: templates/about.html:43 msgid "Commit Branch" -msgstr "" +msgstr "Ramo de commits" #: templates/about.html:49 msgid "InvenTree Documentation" -msgstr "" +msgstr "Documentação do InvenTree" #: templates/about.html:54 msgid "API Version" -msgstr "" +msgstr "Versão do API" #: templates/about.html:59 msgid "Python Version" -msgstr "" +msgstr "Versão do Python" #: templates/about.html:64 msgid "Django Version" -msgstr "" +msgstr "Versão Django" #: templates/about.html:69 msgid "View Code on GitHub" -msgstr "" +msgstr "Veja o código no GitHub" #: templates/about.html:74 msgid "Credits" -msgstr "" +msgstr "Créditos" #: templates/about.html:79 msgid "Mobile App" -msgstr "" +msgstr "Aplicativo Móvel" #: templates/about.html:84 msgid "Submit Bug Report" -msgstr "" +msgstr "Enviar relatório de erro" #: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" -msgstr "" +msgstr "copiar para área de transferência" #: templates/about.html:91 msgid "copy version information" -msgstr "" +msgstr "copiar informações da versão" #: templates/account/base.html:66 templates/navbar.html:17 msgid "InvenTree logo" -msgstr "" +msgstr "Logotipo InvenTree" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:9 msgid "Confirm Email Address" -msgstr "" +msgstr "Confirmar endereço de e-mail" #: templates/account/email_confirm.html:15 #, python-format msgid "Please confirm that %(email)s is an email address for user %(user_display)s." -msgstr "" +msgstr "Por favor, confirme que %(email)s é um endereço de e-mail para o usuário %(user_display)s." #: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770 msgid "Confirm" -msgstr "" +msgstr "Confirmar" #: templates/account/email_confirm.html:29 #, python-format msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request." -msgstr "" +msgstr "Este link de confirmação expirou ou é inválido. Por favor, envie uma nova solicitação de confirmação de e-mail." #: templates/account/login.html:6 templates/account/login.html:17 #: templates/account/login.html:38 templates/socialaccount/login.html:5 msgid "Sign In" -msgstr "" +msgstr "Acessar" #: templates/account/login.html:21 msgid "Not a member?" -msgstr "" +msgstr "Não é membro?" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" -msgstr "" +msgstr "Cadastre-se" #: templates/account/login.html:45 msgid "Forgot Password?" -msgstr "" +msgstr "Esqueceu a senha?" #: templates/account/login.html:53 msgid "or log in with" -msgstr "" +msgstr "ou acesse com" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:20 msgid "Sign Out" -msgstr "" +msgstr "Sair" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" -msgstr "" +msgstr "Você tem certeza que deseja sair?" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 #: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 msgid "Return to Site" -msgstr "" +msgstr "Retornar ao site" #: templates/account/password_reset.html:5 #: templates/account/password_reset.html:12 msgid "Password Reset" -msgstr "" +msgstr "Redefinir senha" #: templates/account/password_reset.html:18 msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." -msgstr "" +msgstr "Esqueceu sua senha? Digite seu endereço de e-mail abaixo e enviaremos um e-mail para você redefinir sua senha." #: templates/account/password_reset.html:23 msgid "Reset My Password" -msgstr "" +msgstr "Redefinir Minha Senha" #: templates/account/password_reset.html:27 templates/account/signup.html:37 msgid "This function is currently disabled. Please contact an administrator." -msgstr "" +msgstr "Esta função está desativada. Por favor, contate um administrador." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" -msgstr "" +msgstr "Token Inválido" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." -msgstr "" +msgstr "O link de redefinição de senha era inválido, possivelmente porque já foi usado. Solicite um nova redefinição de senha." #: templates/account/password_reset_from_key.html:18 msgid "Change password" -msgstr "" +msgstr "Alterar senha" #: templates/account/password_reset_from_key.html:22 msgid "Your password is now changed." -msgstr "" +msgstr "Sua senha foi alterada." #: templates/account/signup.html:13 #, python-format msgid "Already have an account? Then please sign in." -msgstr "" +msgstr "Já tem uma conta? Então, por favor Entrar." #: templates/account/signup.html:28 msgid "Use a SSO-provider for signup" -msgstr "" +msgstr "Use um provedor SSO para inscrição" #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" -msgstr "" +msgstr "Registro fechado" #: templates/account/signup_closed.html:10 msgid "Sign up is currently closed." -msgstr "" +msgstr "Registro está atualmente fechado." #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" -msgstr "" +msgstr "Voltar a página de acesso" #: templates/admin_button.html:8 msgid "View in administration panel" -msgstr "" +msgstr "Ver no Painel de Administração" #: templates/allauth_2fa/authenticate.html:5 msgid "Two-Factor Authentication" -msgstr "" +msgstr "Autenticação de dois fatores" #: templates/allauth_2fa/authenticate.html:13 msgid "Authenticate" -msgstr "" +msgstr "Autenticar" #: templates/allauth_2fa/backup_tokens.html:6 msgid "Two-Factor Authentication Backup Tokens" -msgstr "" +msgstr "Backup de Tokens de Autenticação Dois-Fatores" #: templates/allauth_2fa/backup_tokens.html:17 msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones." -msgstr "" +msgstr "Os tokens de backup foram gerados, mas não são revelados aqui por razões de segurança. Pressione o botão abaixo para gerar novos." #: templates/allauth_2fa/backup_tokens.html:20 msgid "No backup tokens are available. Press the button below to generate some." -msgstr "" +msgstr "Nenhum token de backup está disponível. Pressione o botão abaixo para gerar alguns." #: templates/allauth_2fa/backup_tokens.html:28 msgid "Generate Tokens" -msgstr "" +msgstr "Gerar Tokens" #: templates/allauth_2fa/remove.html:6 msgid "Disable Two-Factor Authentication" -msgstr "" +msgstr "Desativar Autenticação de Dois Fatores" #: templates/allauth_2fa/remove.html:9 msgid "Are you sure?" -msgstr "" +msgstr "Você tem certeza?" #: templates/allauth_2fa/remove.html:17 msgid "Disable 2FA" -msgstr "" +msgstr "Desativar A2F" #: templates/allauth_2fa/setup.html:6 msgid "Setup Two-Factor Authentication" -msgstr "" +msgstr "Configurar Autenticação de Dois Fatores" #: templates/allauth_2fa/setup.html:10 msgid "Step 1" -msgstr "" +msgstr "Passo 1" #: templates/allauth_2fa/setup.html:14 msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." -msgstr "" +msgstr "Escaneie o código QR abaixo com um gerador de token de sua escolha (por exemplo, Google Authenticator)." #: templates/allauth_2fa/setup.html:23 msgid "Step 2" -msgstr "" +msgstr "Passo 2" #: templates/allauth_2fa/setup.html:27 msgid "Input a token generated by the app:" -msgstr "" +msgstr "Insira um token gerado pelo aplicativo:" #: templates/allauth_2fa/setup.html:37 msgid "Verify" -msgstr "" +msgstr "Verificar" #: templates/attachment_button.html:4 templates/js/translated/attachment.js:70 msgid "Add Link" -msgstr "" +msgstr "Adicionar Link" #: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 msgid "Add Attachment" -msgstr "" +msgstr "Adicionar anexo" #: templates/barcode_data.html:5 msgid "Barcode Identifier" -msgstr "" +msgstr "Identificador de Código de Barras" #: templates/base.html:103 msgid "Server Restart Required" -msgstr "" +msgstr "Reinicialização do Servidor é Necessária" #: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" -msgstr "" +msgstr "Uma opção de configuração foi alterada, o que requer uma reinicialização do servidor" #: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" -msgstr "" +msgstr "Contate seu administrador de sistema para mais informações" #: templates/base.html:113 msgid "Pending Database Migrations" -msgstr "" +msgstr "Migrações de Banco de Dados Pendentes" #: templates/base.html:116 msgid "There are pending database migrations which require attention" -msgstr "" +msgstr "Existem migrações pendentes do banco de dados que requerem atenção" #: templates/email/build_order_completed.html:9 #: templates/email/canceled_order_assigned.html:9 @@ -10232,274 +10503,274 @@ msgstr "" #: templates/email/purchase_order_received.html:9 #: templates/email/return_order_received.html:9 msgid "Click on the following link to view this order" -msgstr "" +msgstr "Clique no link abaixo para ver este pedido" #: templates/email/build_order_required_stock.html:7 msgid "Stock is required for the following build order" -msgstr "" +msgstr "Estoque é necessário para o pedido de produção a seguir" #: templates/email/build_order_required_stock.html:8 #, python-format msgid "Build order %(build)s - building %(quantity)s x %(part)s" -msgstr "" +msgstr "O pedido de Produção %(build)s - construindo %(quantity)s x %(part)s" #: templates/email/build_order_required_stock.html:10 msgid "Click on the following link to view this build order" -msgstr "" +msgstr "Clique no link abaixo para ver este pedido de produção" #: templates/email/build_order_required_stock.html:14 msgid "The following parts are low on required stock" -msgstr "" +msgstr "As peças a seguir estão abaixo do estoque requerido" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" -msgstr "" +msgstr "Quantidade Requerida" #: templates/email/build_order_required_stock.html:38 #: templates/email/low_stock_notification.html:30 msgid "You are receiving this email because you are subscribed to notifications for this part " -msgstr "" +msgstr "Você está recebendo este e-mail porque está inscrito para notificações dessa peça " #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" -msgstr "" +msgstr "Clique no link abaixo para ver esta peça" #: templates/email/low_stock_notification.html:18 #: templates/js/translated/part.js:3187 msgid "Minimum Quantity" -msgstr "" +msgstr "Quantidade Mínima" #: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" -msgstr "" +msgstr "Sem Resposta" #: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" -msgstr "" +msgstr "Sem resposta do servidor InvenTree" #: templates/js/translated/api.js:232 msgid "Error 400: Bad request" -msgstr "" +msgstr "Erro 400: Requisição ruim" #: templates/js/translated/api.js:233 msgid "API request returned error code 400" -msgstr "" +msgstr "Solicitação de API retornou o código de erro 400" #: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" -msgstr "" +msgstr "Erro 401: Não Autenticado" #: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" -msgstr "" +msgstr "Credenciais de autenticação não fornecidas" #: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" -msgstr "" +msgstr "Erro 403: Permissão Negada" #: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "" +msgstr "Você não tem as permissões necessárias para acessar esta função" #: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" -msgstr "" +msgstr "Erro 404: Recurso Não Encontrado" #: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" -msgstr "" +msgstr "O recurso requisitado não pôde ser encontrado no servidor" #: templates/js/translated/api.js:252 msgid "Error 405: Method Not Allowed" -msgstr "" +msgstr "Erro 405: Método Não Permitido" #: templates/js/translated/api.js:253 msgid "HTTP method not allowed at URL" -msgstr "" +msgstr "Método HTTP não permitido na URL" #: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "" +msgstr "Erro 408: Tempo Limite" #: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" -msgstr "" +msgstr "Tempo limite da conexão atingido ao solicitar dados do servidor" #: templates/js/translated/api.js:261 msgid "Error 503: Service Unavailable" -msgstr "" +msgstr "Erro 503: Serviço Indisponível" #: templates/js/translated/api.js:262 msgid "The server is currently unavailable" -msgstr "" +msgstr "O servidor está atualmente indisponível" #: templates/js/translated/api.js:265 msgid "Unhandled Error Code" -msgstr "" +msgstr "Código de erro não tratado" #: templates/js/translated/api.js:266 msgid "Error code" -msgstr "" +msgstr "Código do erro" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" -msgstr "" +msgstr "Todos os anexos selecionados serão excluídos" #: templates/js/translated/attachment.js:129 msgid "Delete Attachments" -msgstr "" +msgstr "Excluir Anexos" #: templates/js/translated/attachment.js:205 msgid "Delete attachments" -msgstr "" +msgstr "Excluir anexos" #: templates/js/translated/attachment.js:253 msgid "Attachment actions" -msgstr "" +msgstr "Ações de anexos" #: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "" +msgstr "Nenhum anexo encontrado" #: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "" +msgstr "Editar Anexo" #: templates/js/translated/attachment.js:346 msgid "Upload Date" -msgstr "" +msgstr "Data de Envio" #: templates/js/translated/attachment.js:366 msgid "Edit attachment" -msgstr "" +msgstr "Editar anexo" #: templates/js/translated/attachment.js:374 msgid "Delete attachment" -msgstr "" +msgstr "Apagar anexo" #: templates/js/translated/barcode.js:43 msgid "Scan barcode data here using barcode scanner" -msgstr "" +msgstr "Leia o código de barras aqui usando um leitor de código de barras" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "" +msgstr "Digitar informações do código de barras" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" -msgstr "" +msgstr "Ler código de barras usando webcam conectada" #: templates/js/translated/barcode.js:138 msgid "Enter optional notes for stock transfer" -msgstr "" +msgstr "Digite notas opcionais para transferência de estoque" #: templates/js/translated/barcode.js:139 msgid "Enter notes" -msgstr "" +msgstr "Inserir anotações" #: templates/js/translated/barcode.js:188 msgid "Server error" -msgstr "" +msgstr "Erro no servidor" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" -msgstr "" +msgstr "Resposta desconhecida do servidor" #: templates/js/translated/barcode.js:252 #: templates/js/translated/modals.js:1120 msgid "Invalid server response" -msgstr "" +msgstr "Resposta do servidor inválida" #: templates/js/translated/barcode.js:372 msgid "Scan barcode data" -msgstr "" +msgstr "Ler dados do código de barras" #: templates/js/translated/barcode.js:420 templates/navbar.html:114 msgid "Scan Barcode" -msgstr "" +msgstr "Ler Código de Barras" #: templates/js/translated/barcode.js:458 msgid "No URL in response" -msgstr "" +msgstr "Nenhuma URL na resposta" #: templates/js/translated/barcode.js:498 msgid "This will remove the link to the associated barcode" -msgstr "" +msgstr "Isto irá remover o link com o código de barras associado" #: templates/js/translated/barcode.js:504 msgid "Unlink" -msgstr "" +msgstr "Desassociar" #: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 msgid "Remove stock item" -msgstr "" +msgstr "Remover item de estoque" #: templates/js/translated/barcode.js:610 msgid "Scan Stock Items Into Location" -msgstr "" +msgstr "Escanear Itens de Estoque para Local" #: templates/js/translated/barcode.js:612 msgid "Scan stock item barcode to check in to this location" -msgstr "" +msgstr "Digitalize o código de barras dos itens de estoque para fazer check-in nesta localização" #: templates/js/translated/barcode.js:615 #: templates/js/translated/barcode.js:812 msgid "Check In" -msgstr "" +msgstr "Check-in" #: templates/js/translated/barcode.js:647 msgid "No barcode provided" -msgstr "" +msgstr "Nenhum código de barras fornecido" #: templates/js/translated/barcode.js:687 msgid "Stock Item already scanned" -msgstr "" +msgstr "Item de estoque já escaneado" #: templates/js/translated/barcode.js:691 msgid "Stock Item already in this location" -msgstr "" +msgstr "Item de estoque já está nesta localização" #: templates/js/translated/barcode.js:698 msgid "Added stock item" -msgstr "" +msgstr "Item de estoque adicionado" #: templates/js/translated/barcode.js:707 msgid "Barcode does not match valid stock item" -msgstr "" +msgstr "Código de barras não corresponde a item de estoque válido" #: templates/js/translated/barcode.js:726 msgid "Scan Stock Container Into Location" -msgstr "" +msgstr "Escanear o Recipiente de Estoque em Local" #: templates/js/translated/barcode.js:728 msgid "Scan stock container barcode to check in to this location" -msgstr "" +msgstr "Digitalize o código de barras do contêiner para fazer check-in para esta localização" #: templates/js/translated/barcode.js:762 msgid "Barcode does not match valid stock location" -msgstr "" +msgstr "Código de barras não corresponde ao local de estoque válido" #: templates/js/translated/barcode.js:806 msgid "Check Into Location" -msgstr "" +msgstr "Registrar no Local" #: templates/js/translated/barcode.js:875 #: templates/js/translated/barcode.js:884 msgid "Barcode does not match a valid location" -msgstr "" +msgstr "Código de barras não corresponde a um local válido" #: templates/js/translated/bom.js:78 msgid "Create BOM Item" -msgstr "" +msgstr "Criar Item da BOM" #: templates/js/translated/bom.js:132 msgid "Display row data" -msgstr "" +msgstr "Mostrar dados da linha" #: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "" +msgstr "Dados da Linha" #: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 #: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 @@ -10507,1514 +10778,1514 @@ msgstr "" #: templates/js/translated/purchase_order.js:805 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" -msgstr "" +msgstr "Fechar" #: templates/js/translated/bom.js:306 msgid "Download BOM Template" -msgstr "" +msgstr "Baixar modelo de BOM" #: templates/js/translated/bom.js:351 msgid "Multi Level BOM" -msgstr "" +msgstr "BOM Multinível" #: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" -msgstr "" +msgstr "Incluir dados BOM para sub-montagens" #: templates/js/translated/bom.js:357 msgid "Levels" -msgstr "" +msgstr "Níveis" #: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "" +msgstr "Selecione o número máximo de níveis BOM para exportar (0= todos os níveis)" #: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" -msgstr "" +msgstr "Incluir Peças Alternativas" #: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" -msgstr "" +msgstr "Incluir peças alternativas na BOM exportada" #: templates/js/translated/bom.js:371 msgid "Include Parameter Data" -msgstr "" +msgstr "Incluir Parâmetros de Dados" #: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" -msgstr "" +msgstr "Incluir dados do parâmetro da peça na BOM exportada" #: templates/js/translated/bom.js:377 msgid "Include Stock Data" -msgstr "" +msgstr "Incluir Dados do Estoque" #: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" -msgstr "" +msgstr "Incluir dados do estoque da peça na BOM exportada" #: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" -msgstr "" +msgstr "Incluir Dados do Fabricante" #: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" -msgstr "" +msgstr "Incluir dados da peça do fabricante na BOM exportada" #: templates/js/translated/bom.js:389 msgid "Include Supplier Data" -msgstr "" +msgstr "Incluir Dodos do Fornecedor" #: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" -msgstr "" +msgstr "Incluir dados da peça do fornecedor na BOM exportada" #: templates/js/translated/bom.js:395 msgid "Include Pricing Data" -msgstr "" +msgstr "Incluir Dados de Preço" #: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" -msgstr "" +msgstr "Incluir dados de preço na BOM exportada" #: templates/js/translated/bom.js:591 msgid "Remove substitute part" -msgstr "" +msgstr "Remover peça substituta" #: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" -msgstr "" +msgstr "Selecione e adicione uma nova peça substituída usando a entrada abaixo" #: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" -msgstr "" +msgstr "Tem certeza que deseja remover este link de peça substituta?" #: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" -msgstr "" +msgstr "Remover Peça Substituta" #: templates/js/translated/bom.js:701 msgid "Add Substitute" -msgstr "" +msgstr "Adicionar Substituto" #: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" -msgstr "" +msgstr "Editar Itens Substitutos da BOM" #: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" -msgstr "" +msgstr "Todos os itens selecionados da BOM serão apagados" #: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" -msgstr "" +msgstr "Apagar itens selecionados da BOM?" #: templates/js/translated/bom.js:826 msgid "Delete items" -msgstr "" +msgstr "Apagar items" #: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" -msgstr "" +msgstr "Carregar BOM para a submontagem" #: templates/js/translated/bom.js:946 msgid "Substitutes Available" -msgstr "" +msgstr "Substitutos Disponíveis" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" -msgstr "" +msgstr "Estoque de variantes permitido" #: templates/js/translated/bom.js:1014 msgid "Substitutes" -msgstr "" +msgstr "Substitutos" #: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" -msgstr "" +msgstr "Preços da BOM estão completos" #: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" -msgstr "" +msgstr "Preços da BOM estão incompletos" #: templates/js/translated/bom.js:1151 msgid "No pricing available" -msgstr "" +msgstr "Nenhum preço disponível" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" -msgstr "" +msgstr "Nenhum Estoque Disponível" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" -msgstr "" +msgstr "Incluir estoque de variantes e substitutos" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" -msgstr "" +msgstr "Incluir estoque de variantes" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" -msgstr "" +msgstr "Incluir estoque de substitutos" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" -msgstr "" +msgstr "Itens consumíveis" #: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" -msgstr "" +msgstr "Validar Item da BOM" #: templates/js/translated/bom.js:1281 msgid "This line has been validated" -msgstr "" +msgstr "Esta linha foi validada" #: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" -msgstr "" +msgstr "Editar peças substitutas" #: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" -msgstr "" +msgstr "Editar Item da BOM" #: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" -msgstr "" +msgstr "Apagar Item da BOM" #: templates/js/translated/bom.js:1307 msgid "View BOM" -msgstr "" +msgstr "Ver BOM" #: templates/js/translated/bom.js:1391 msgid "No BOM items found" -msgstr "" +msgstr "Nenhum item da BOM encontrado" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" -msgstr "" +msgstr "Peça Requerida" #: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" -msgstr "" +msgstr "Herdado da BOM paternal" #: templates/js/translated/build.js:142 msgid "Edit Build Order" -msgstr "" +msgstr "Editar Pedido de Produção" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" -msgstr "" +msgstr "Criar Pedido de Produção" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" -msgstr "" +msgstr "Cancelar Pedido de Produção" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" -msgstr "" +msgstr "Tem certeza que deseja cancelar essa produção?" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" -msgstr "" +msgstr "Itens de estoque foram alocados para este pedido de produção" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" -msgstr "" +msgstr "Há saídas incompletas restantes para este pedido de produção" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" -msgstr "" - -#: templates/js/translated/build.js:299 -msgid "This build order cannot be completed as there are incomplete outputs" -msgstr "" +msgstr "Pedido de produção está pronto para ser concluído" #: templates/js/translated/build.js:304 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "Este pedido de produção não pode ser concluído pois há saídas incompletas" + +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" -msgstr "" +msgstr "Pedido de Produção está incompleto" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" -msgstr "" +msgstr "Completar Pedido de Produção" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" -msgstr "" +msgstr "Próximo número de série disponível" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "" +msgstr "Último número de série" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" -msgstr "" +msgstr "A Lista de Materiais (BOM) contém peças rastreáveis" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" -msgstr "" +msgstr "Saída de produção deve ser gerada individualmente" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" -msgstr "" +msgstr "Peças rastreáveis podem ter números de séries especificados" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "" +msgstr "Digite números de série para gerar várias saídas de produção simples" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" -msgstr "" +msgstr "Criar Saída de Produção" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" -msgstr "" +msgstr "Alocar itens de estoque para a saída de produção" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" -msgstr "" +msgstr "Desalocar estoque da saída de produção" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" -msgstr "" +msgstr "Concluir saída de produção" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" -msgstr "" +msgstr "Sucatear saída de produção" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" -msgstr "" +msgstr "Excluir saída de produção" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" -msgstr "" +msgstr "Tem certeza que deseja desalocar os itens de estoque selecionados desta produção?" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" -msgstr "" +msgstr "Desalocar Items de Estoque" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" -msgstr "" +msgstr "Selecionar Saída de Produção" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" -msgstr "" +msgstr "Ao menos uma saída de produção deve ser selecionada" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" -msgstr "" +msgstr "Saídas de produção selecionadas serão marcadas como completas" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" -msgstr "" +msgstr "Saída" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" -msgstr "" +msgstr "Concluir Saídas de Produção" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" -msgstr "" +msgstr "Saídas de produção selecionadas serão marcadas como sucatas" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" -msgstr "" +msgstr "Saídas sucateadas são marcadas como rejeitada" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" -msgstr "" +msgstr "Itens de estoque alocados não estarão mais disponíveis" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" -msgstr "" +msgstr "O estado de conclusão do pedido de produção não será ajustado" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" -msgstr "" +msgstr "Sucatear Saídas de Produção" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" -msgstr "" +msgstr "Saídas de produção selecionadas serão apagadas" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" -msgstr "" +msgstr "Dados da saída de produção serão excluídos permanentemente" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" -msgstr "" +msgstr "Itens de estoque alocados serão retornados ao estoque" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" -msgstr "" +msgstr "Deletar Saída de Produção" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" -msgstr "" +msgstr "Nenhuma alocação de pedido de produção encontrada" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" -msgstr "" +msgstr "Quantidade Alocada" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" -msgstr "" +msgstr "Local não especificado" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" -msgstr "" +msgstr "Saídas concluídas" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" -msgstr "" +msgstr "Sucatear saídas" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" -msgstr "" - -#: templates/js/translated/build.js:1110 -msgid "build output" -msgstr "" - -#: templates/js/translated/build.js:1111 -msgid "build outputs" -msgstr "" +msgstr "Exlcuir saídas" #: templates/js/translated/build.js:1115 +msgid "build output" +msgstr "saída da produção" + +#: templates/js/translated/build.js:1116 +msgid "build outputs" +msgstr "saídas da produção" + +#: templates/js/translated/build.js:1120 msgid "Build output actions" -msgstr "" +msgstr "Ações da saída de produção" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" -msgstr "" +msgstr "Nenhuma saída de produção ativa encontrada" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" -msgstr "" +msgstr "Linhas Alocadas" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" -msgstr "" +msgstr "Testes Obrigatórios" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "" +msgstr "Selecionar Peças" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" -msgstr "" +msgstr "Você deve selecionar ao menos uma peça para alocar" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" -msgstr "" +msgstr "Especifique a quantidade de alocação de estoque" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" -msgstr "" +msgstr "Todas as Peças Alocadas" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" -msgstr "" +msgstr "Todas as peças selecionadas foram completamente alocadas" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" -msgstr "" +msgstr "Selecione o local de origem (deixe em branco para tirar de todos os locais)" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" -msgstr "" +msgstr "Alocar Itens de Estoque para o Pedido de Produção" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" -msgstr "" +msgstr "Nenhum local de estoque correspondente" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" -msgstr "" +msgstr "Nenhum item de estoque correspondente" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" -msgstr "" +msgstr "Alocação Automática de Estoque" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "" +msgstr "Itens de estoque serão automaticamente alocados para este pedido de produção, conforme as diretrizes fornecidas" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" -msgstr "" +msgstr "Se um local for especificado o estoque será apenas alocado deste local" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" -msgstr "" +msgstr "Se o estoque é considerado intercambiável será alocado a partir da primeira localização encontrada" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" -msgstr "" +msgstr "Se estoque substituto é permitido será utilizado quando o estoque primário não for encontrado" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" -msgstr "" +msgstr "Alocar Itens de Estoque" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" -msgstr "" +msgstr "Nenhuma produção corresponde a consulta" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" -msgstr "" +msgstr "Selecionar" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" -msgstr "" +msgstr "Pedido de produção está atrasada" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" -msgstr "" +msgstr "Progresso" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" -msgstr "" +msgstr "Sem informações de usuário" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" -msgstr "" +msgstr "Editar alocação de estoque" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" -msgstr "" +msgstr "Excluir alocação de estoque" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" -msgstr "" +msgstr "Editar Alocação" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" -msgstr "" +msgstr "Remover Alocação" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" -msgstr "" +msgstr "linha de produção" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" -msgstr "" +msgstr "linhas de produção" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" -msgstr "" +msgstr "Nenhuma linha produção encontrada" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" -msgstr "" +msgstr "Peça rastreável" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" -msgstr "" +msgstr "Quantidade Unitária" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" -msgstr "" +msgstr "Estoque suficiente disponível" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" -msgstr "" +msgstr "Item Consumível" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" -msgstr "" - -#: templates/js/translated/build.js:2640 -#: templates/js/translated/sales_order.js:2016 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2649 -#: templates/js/translated/sales_order.js:2010 -msgid "Allocate stock" -msgstr "" +msgstr "Item rastreado" #: templates/js/translated/build.js:2653 +#: templates/js/translated/sales_order.js:2016 +msgid "Build stock" +msgstr "Estoque de produção" + +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "Pedir Estoque" + +#: templates/js/translated/build.js:2662 +#: templates/js/translated/sales_order.js:2010 +msgid "Allocate stock" +msgstr "Alocar Estoque" + +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" -msgstr "" +msgstr "Remover alocação de estoque" #: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "" +msgstr "Adicionar Fabricante" #: templates/js/translated/company.js:111 #: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "" +msgstr "Adicionar Peça do Fabricante" #: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "" +msgstr "Editar Peça do Fabricante" #: templates/js/translated/company.js:201 #: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "" +msgstr "Adicionar Fornecedor" #: templates/js/translated/company.js:243 #: templates/js/translated/purchase_order.js:352 msgid "Add Supplier Part" -msgstr "" +msgstr "Adicionar Peça do Fornecedor" #: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" -msgstr "" +msgstr "Todas as peças selecionadas do fornecedor serão apagadas" #: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" -msgstr "" +msgstr "Excluir Peças do Fornecedor" #: templates/js/translated/company.js:465 msgid "Add new Company" -msgstr "" +msgstr "Adicionar nova Empresa" #: templates/js/translated/company.js:536 msgid "Parts Supplied" -msgstr "" +msgstr "Peças Fornecidas" #: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "" +msgstr "Peças Fabricadas" #: templates/js/translated/company.js:560 msgid "No company information found" -msgstr "" +msgstr "Nenhuma informação da empresa encontrada" #: templates/js/translated/company.js:609 msgid "Create New Contact" -msgstr "" +msgstr "Criar Novo Contato" #: templates/js/translated/company.js:625 #: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "" +msgstr "Editar Contato" #: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" -msgstr "" +msgstr "Todos os contatos selecionados serão apagados" #: templates/js/translated/company.js:668 #: templates/js/translated/company.js:732 msgid "Role" -msgstr "" +msgstr "Função" #: templates/js/translated/company.js:676 msgid "Delete Contacts" -msgstr "" +msgstr "Excluir Contatos" #: templates/js/translated/company.js:707 msgid "No contacts found" -msgstr "" +msgstr "Nenhum contato encontrado" #: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "" +msgstr "Número de telefone" #: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "" +msgstr "Endereço de e-mail" #: templates/js/translated/company.js:752 msgid "Delete Contact" -msgstr "" +msgstr "Excluir Contato" #: templates/js/translated/company.js:849 msgid "Create New Address" -msgstr "" +msgstr "Criar Novo Endereço" #: templates/js/translated/company.js:864 #: templates/js/translated/company.js:1025 msgid "Edit Address" -msgstr "" +msgstr "Editar o Endereço" #: templates/js/translated/company.js:899 msgid "All selected addresses will be deleted" -msgstr "" +msgstr "Todos os endereços selecionados serão excluídos" #: templates/js/translated/company.js:913 msgid "Delete Addresses" -msgstr "" +msgstr "Excluir Endereço" #: templates/js/translated/company.js:940 msgid "No addresses found" -msgstr "" +msgstr "Nenhum endereço encontrado" #: templates/js/translated/company.js:979 msgid "Postal city" -msgstr "" +msgstr "Cidade Postal" #: templates/js/translated/company.js:985 msgid "State/province" -msgstr "" +msgstr "Estado/Provincia" #: templates/js/translated/company.js:997 msgid "Courier notes" -msgstr "" +msgstr "Notas do entregador" #: templates/js/translated/company.js:1003 msgid "Internal notes" -msgstr "" +msgstr "Notas internas" #: templates/js/translated/company.js:1029 msgid "Delete Address" -msgstr "" +msgstr "Excluir Endereço" #: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" -msgstr "" +msgstr "Todas as peças do fabricante selecionado serão excluídas" #: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" -msgstr "" +msgstr "Excluir Peças do Fabricante" #: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" -msgstr "" +msgstr "Todos os parâmetros selecionados serão excluídos" #: templates/js/translated/company.js:1165 msgid "Delete Parameters" -msgstr "" +msgstr "Excluir Parâmetros" #: templates/js/translated/company.js:1181 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 msgid "Order parts" -msgstr "" +msgstr "Pedir peças" #: templates/js/translated/company.js:1198 msgid "Delete manufacturer parts" -msgstr "" +msgstr "Apagar peças do fabricante" #: templates/js/translated/company.js:1230 msgid "Manufacturer part actions" -msgstr "" +msgstr "Ações de peça do fabricante" #: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" -msgstr "" +msgstr "Nenhuma peça do fabricante encontrada" #: templates/js/translated/company.js:1269 #: templates/js/translated/company.js:1557 templates/js/translated/part.js:798 #: templates/js/translated/part.js:1210 msgid "Template part" -msgstr "" +msgstr "Modelo de peça" #: templates/js/translated/company.js:1273 #: templates/js/translated/company.js:1561 templates/js/translated/part.js:802 #: templates/js/translated/part.js:1214 msgid "Assembled part" -msgstr "" +msgstr "Peça montada" #: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464 msgid "No parameters found" -msgstr "" +msgstr "Nenhum parâmetro encontrado" #: templates/js/translated/company.js:1428 templates/js/translated/part.js:1527 msgid "Edit parameter" -msgstr "" +msgstr "Editar parâmetro" #: templates/js/translated/company.js:1429 templates/js/translated/part.js:1528 msgid "Delete parameter" -msgstr "" +msgstr "Excluir parâmetro" #: templates/js/translated/company.js:1446 templates/js/translated/part.js:1433 msgid "Edit Parameter" -msgstr "" +msgstr "Editar Parâmetro" #: templates/js/translated/company.js:1455 templates/js/translated/part.js:1549 msgid "Delete Parameter" -msgstr "" +msgstr "Excluir Parâmetro" #: templates/js/translated/company.js:1486 msgid "Delete supplier parts" -msgstr "" +msgstr "Excluir peças do fornecedor" #: templates/js/translated/company.js:1536 msgid "No supplier parts found" -msgstr "" +msgstr "Nenhum peça do fornecedor encontrada" #: templates/js/translated/company.js:1654 msgid "Base Units" -msgstr "" +msgstr "Unidade Base" #: templates/js/translated/company.js:1684 msgid "Availability" -msgstr "" +msgstr "Disponibilidade" #: templates/js/translated/company.js:1715 msgid "Edit supplier part" -msgstr "" +msgstr "Editar fornecedor da peça" #: templates/js/translated/company.js:1716 msgid "Delete supplier part" -msgstr "" +msgstr "Excluir peça do fornecedor" #: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" -msgstr "" +msgstr "Excluir quebras de preço" #: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" -msgstr "" +msgstr "Editar Quebra de Preço" #: templates/js/translated/company.js:1794 msgid "No price break information found" -msgstr "" +msgstr "Nenhuma informação de quebra de preço" #: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "" +msgstr "Última atualização" #: templates/js/translated/company.js:1830 msgid "Edit price break" -msgstr "" +msgstr "Editar quebra de preço" #: templates/js/translated/company.js:1831 msgid "Delete price break" -msgstr "" +msgstr "Excluir quebra de preço" #: templates/js/translated/filters.js:186 #: templates/js/translated/filters.js:672 msgid "true" -msgstr "" +msgstr "verdadeiro" #: templates/js/translated/filters.js:190 #: templates/js/translated/filters.js:673 msgid "false" -msgstr "" +msgstr "falso" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "" +msgstr "Selecionar filtro" #: templates/js/translated/filters.js:437 msgid "Print Labels" -msgstr "" +msgstr "Imprimir Etiquetas" #: templates/js/translated/filters.js:441 msgid "Print Reports" -msgstr "" +msgstr "Imprimir Relatórios" #: templates/js/translated/filters.js:453 msgid "Download table data" -msgstr "" +msgstr "Baixar dados da tabela" #: templates/js/translated/filters.js:460 msgid "Reload table data" -msgstr "" +msgstr "Recarregar dados da tabela" #: templates/js/translated/filters.js:469 msgid "Add new filter" -msgstr "" +msgstr "Adicionar novo filtro" #: templates/js/translated/filters.js:477 msgid "Clear all filters" -msgstr "" +msgstr "Limpar todos os filtros" #: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "" +msgstr "Criar filtro" #: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 #: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" -msgstr "" +msgstr "Ação proibida" #: templates/js/translated/forms.js:376 msgid "Create operation not allowed" -msgstr "" +msgstr "Operação de criação não permitida" #: templates/js/translated/forms.js:391 msgid "Update operation not allowed" -msgstr "" +msgstr "Operação de atualização não permitida" #: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" -msgstr "" +msgstr "Operação de excluir não permitida" #: templates/js/translated/forms.js:419 msgid "View operation not allowed" -msgstr "" +msgstr "Operação de visualização não permitida" #: templates/js/translated/forms.js:796 msgid "Keep this form open" -msgstr "" +msgstr "Manter este formulário aberto" #: templates/js/translated/forms.js:899 msgid "Enter a valid number" -msgstr "" +msgstr "Insira um número válido" #: templates/js/translated/forms.js:1469 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" -msgstr "" +msgstr "Há erros de formulário" #: templates/js/translated/forms.js:1967 msgid "No results found" -msgstr "" +msgstr "Nenhum resultado encontrado" #: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239 msgid "Searching" -msgstr "" +msgstr "Buscando" #: templates/js/translated/forms.js:2485 msgid "Clear input" -msgstr "" +msgstr "Limpar entrada" #: templates/js/translated/forms.js:3071 msgid "File Column" -msgstr "" +msgstr "Coluna de arquivos" #: templates/js/translated/forms.js:3071 msgid "Field Name" -msgstr "" +msgstr "Nome do Campo" #: templates/js/translated/forms.js:3083 msgid "Select Columns" -msgstr "" +msgstr "Selecionar Colunas" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "" +msgstr "SIM" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "" +msgstr "NÃO" #: templates/js/translated/helpers.js:93 msgid "True" -msgstr "" +msgstr "Verdadeiro" #: templates/js/translated/helpers.js:94 msgid "False" -msgstr "" +msgstr "Falso" #: templates/js/translated/index.js:104 msgid "No parts required for builds" -msgstr "" - -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" +msgstr "Nenhuma parte necessária para produção" #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" -msgstr "" +msgstr "Selecione os Itens" #: templates/js/translated/label.js:54 msgid "No items selected for printing" -msgstr "" +msgstr "Nenhum item selecionado para impressão" #: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "" +msgstr "Nenhuma Etiqueta Encontrada" #: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" -msgstr "" +msgstr "Nenhum modelo de etiqueta corresponde aos itens selecionados" #: templates/js/translated/label.js:97 msgid "selected" -msgstr "" +msgstr "selecionado" #: templates/js/translated/label.js:133 msgid "Printing Options" -msgstr "" +msgstr "Opções de Impressão" #: templates/js/translated/label.js:148 msgid "Print label" -msgstr "" +msgstr "Imprimir Etiqueta" #: templates/js/translated/label.js:148 msgid "Print labels" -msgstr "" +msgstr "Imprimir etiquetas" #: templates/js/translated/label.js:149 msgid "Print" -msgstr "" +msgstr "Imprimir" #: templates/js/translated/label.js:155 msgid "Select label template" -msgstr "" +msgstr "Selecione o modelo de etiqueta" #: templates/js/translated/label.js:168 msgid "Select plugin" -msgstr "" +msgstr "Selecione o plug-in" #: templates/js/translated/label.js:187 msgid "Labels sent to printer" -msgstr "" +msgstr "Etiquetas enviadas à impressora" #: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 #: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "" +msgstr "Cancelar" #: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 #: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" -msgstr "" +msgstr "Enviar" #: templates/js/translated/modals.js:156 msgid "Form Title" -msgstr "" +msgstr "Título do Formulário" #: templates/js/translated/modals.js:445 msgid "Waiting for server..." -msgstr "" +msgstr "Aguardando o servidor..." #: templates/js/translated/modals.js:596 msgid "Show Error Information" -msgstr "" +msgstr "Mostrar Informação do Erro" #: templates/js/translated/modals.js:682 msgid "Accept" -msgstr "" +msgstr "Aceitar" #: templates/js/translated/modals.js:740 msgid "Loading Data" -msgstr "" +msgstr "Carregando dados" #: templates/js/translated/modals.js:1011 msgid "Invalid response from server" -msgstr "" +msgstr "Resposta inválida do servidor" #: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" -msgstr "" +msgstr "Dado de formulário faltando na resposta do servidor" #: templates/js/translated/modals.js:1023 msgid "Error posting form data" -msgstr "" +msgstr "Erro ao postar os dados de formulários" #: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" -msgstr "" +msgstr "Dados de formulário faltando na resposta JSON" #: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" -msgstr "" +msgstr "Erro 400: Requisição Ruim" #: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" -msgstr "" +msgstr "Servidor retornou o código de erro 400" #: templates/js/translated/modals.js:1159 msgid "Error requesting form data" -msgstr "" +msgstr "Erro ao pedir dados de formulário" #: templates/js/translated/news.js:33 msgid "No news found" -msgstr "" +msgstr "Nenhuma notícia encontrada" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 #: templates/js/translated/part.js:1604 msgid "ID" -msgstr "" +msgstr "ID" #: templates/js/translated/notification.js:52 msgid "Age" -msgstr "" +msgstr "Idade" #: templates/js/translated/notification.js:65 msgid "Notification" -msgstr "" +msgstr "Notificação" #: templates/js/translated/notification.js:224 msgid "Mark as unread" -msgstr "" +msgstr "Marcar como não lido" #: templates/js/translated/notification.js:228 msgid "Mark as read" -msgstr "" +msgstr "Marcar como lido" #: templates/js/translated/notification.js:254 msgid "No unread notifications" -msgstr "" +msgstr "Nenhuma notificação pendente" #: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" -msgstr "" +msgstr "Notificações irão carregar aqui" #: templates/js/translated/order.js:89 msgid "Add Extra Line Item" -msgstr "" +msgstr "Adicionar Item de Linha Extra" #: templates/js/translated/order.js:126 msgid "Export Order" -msgstr "" +msgstr "Ordem de Exportação" #: templates/js/translated/order.js:241 msgid "Duplicate Line" -msgstr "" +msgstr "Duplicar Linha" #: templates/js/translated/order.js:255 msgid "Edit Line" -msgstr "" +msgstr "Editar Linha" #: templates/js/translated/order.js:268 msgid "Delete Line" -msgstr "" +msgstr "Apagar Linha" #: templates/js/translated/order.js:281 #: templates/js/translated/purchase_order.js:1987 msgid "No line items found" -msgstr "" +msgstr "Nenhum item de linha encontrado" #: templates/js/translated/order.js:369 msgid "Duplicate line" -msgstr "" +msgstr "Duplicar linha" #: templates/js/translated/order.js:370 msgid "Edit line" -msgstr "" +msgstr "Editar linha" #: templates/js/translated/order.js:374 msgid "Delete line" -msgstr "" +msgstr "Apagar linha" #: templates/js/translated/part.js:90 msgid "Part Attributes" -msgstr "" +msgstr "Atributos da Peça" #: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "" +msgstr "Opções de Criação de Peça" #: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "" +msgstr "Opções de Duplicação de Peça" #: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "" +msgstr "Adicionar Categoria de Peça" #: templates/js/translated/part.js:308 msgid "Parent part category" -msgstr "" +msgstr "Categoria de peça pai" #: templates/js/translated/part.js:332 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" -msgstr "" +msgstr "Ícone (opcional) - Explorar todos os ícones disponíveis em" #: templates/js/translated/part.js:352 msgid "Create Part Category" -msgstr "" +msgstr "Criar Categoria de Peça" #: templates/js/translated/part.js:355 msgid "Create new category after this one" -msgstr "" +msgstr "Criar nova categoria após esta" #: templates/js/translated/part.js:356 msgid "Part category created" -msgstr "" +msgstr "Categoria da peça criada" #: templates/js/translated/part.js:370 msgid "Edit Part Category" -msgstr "" +msgstr "Editar Categoria da Peça" #: templates/js/translated/part.js:383 msgid "Are you sure you want to delete this part category?" -msgstr "" +msgstr "Você tem certeza que deseja excluir essa categoria de peça?" #: templates/js/translated/part.js:388 msgid "Move to parent category" -msgstr "" +msgstr "Mover para categoria parental" #: templates/js/translated/part.js:397 msgid "Delete Part Category" -msgstr "" +msgstr "Excluir Categoria de Peça" #: templates/js/translated/part.js:401 msgid "Action for parts in this category" -msgstr "" +msgstr "Ação para peças nesta categoria" #: templates/js/translated/part.js:406 msgid "Action for child categories" -msgstr "" +msgstr "Ação para categorias filhas" #: templates/js/translated/part.js:430 msgid "Create Part" -msgstr "" +msgstr "Criar Peça" #: templates/js/translated/part.js:432 msgid "Create another part after this one" -msgstr "" +msgstr "Criar outra peça após esta" #: templates/js/translated/part.js:433 msgid "Part created successfully" -msgstr "" +msgstr "Peça criada com sucesso" #: templates/js/translated/part.js:461 msgid "Edit Part" -msgstr "" +msgstr "Editar Peça" #: templates/js/translated/part.js:463 msgid "Part edited" -msgstr "" +msgstr "Peça editada" #: templates/js/translated/part.js:474 msgid "Create Part Variant" -msgstr "" +msgstr "Criar Variante da Peça" #: templates/js/translated/part.js:531 msgid "Active Part" -msgstr "" +msgstr "Peça Ativa" #: templates/js/translated/part.js:532 msgid "Part cannot be deleted as it is currently active" -msgstr "" +msgstr "Peça não pode ser excluída enquanto estiver ativa" #: templates/js/translated/part.js:546 msgid "Deleting this part cannot be reversed" -msgstr "" +msgstr "Excluir esta peça não é reversível" #: templates/js/translated/part.js:548 msgid "Any stock items for this part will be deleted" -msgstr "" +msgstr "Qualquer item de estoque desta peça será excluído" #: templates/js/translated/part.js:549 msgid "This part will be removed from any Bills of Material" -msgstr "" +msgstr "Esta peça será removida de quaisquer Lista de Materiais (BOM)" #: templates/js/translated/part.js:550 msgid "All manufacturer and supplier information for this part will be deleted" -msgstr "" +msgstr "Toda informação de fabricante e fornecedor dessa peça será excluída" #: templates/js/translated/part.js:557 msgid "Delete Part" -msgstr "" +msgstr "Excluir Peça" #: templates/js/translated/part.js:593 msgid "You are subscribed to notifications for this item" -msgstr "" +msgstr "Você está inscrito para receber notificações para este item" #: templates/js/translated/part.js:595 msgid "You have subscribed to notifications for this item" -msgstr "" +msgstr "Você se inscreveu para notificações deste item" #: templates/js/translated/part.js:600 msgid "Subscribe to notifications for this item" -msgstr "" +msgstr "Inscreva-se para receber notificações deste item" #: templates/js/translated/part.js:602 msgid "You have unsubscribed to notifications for this item" -msgstr "" +msgstr "Você descadastrou para notificações deste item" #: templates/js/translated/part.js:619 msgid "Validating the BOM will mark each line item as valid" -msgstr "" +msgstr "Validando a BOM irá marcar como cada linha válida" #: templates/js/translated/part.js:629 msgid "Validate Bill of Materials" -msgstr "" +msgstr "Validar Lista de Materiais (BOM)" #: templates/js/translated/part.js:632 msgid "Validated Bill of Materials" -msgstr "" +msgstr "Lista de Materiais Validada" #: templates/js/translated/part.js:657 msgid "Copy Bill of Materials" -msgstr "" +msgstr "Copiar Lista de Materiais (BOM)" #: templates/js/translated/part.js:685 #: templates/js/translated/table_filters.js:743 msgid "Low stock" -msgstr "" +msgstr "Estoque baixo" #: templates/js/translated/part.js:688 msgid "No stock available" -msgstr "" +msgstr "Nenhum estoque disponível" #: templates/js/translated/part.js:748 msgid "Demand" -msgstr "" +msgstr "Demanda" #: templates/js/translated/part.js:771 msgid "Unit" -msgstr "" +msgstr "Unidade" #: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 msgid "Virtual part" -msgstr "" +msgstr "Peça virtual" #: templates/js/translated/part.js:806 msgid "Subscribed part" -msgstr "" +msgstr "Peça inscrita" #: templates/js/translated/part.js:810 msgid "Salable part" -msgstr "" +msgstr "Peça vendível" #: templates/js/translated/part.js:889 msgid "Schedule generation of a new stocktake report." -msgstr "" +msgstr "Programar geração de um novo relatório de balanço." #: templates/js/translated/part.js:889 msgid "Once complete, the stocktake report will be available for download." -msgstr "" +msgstr "Uma vez concluído, o relatório de estoque estará disponível para baixar." #: templates/js/translated/part.js:897 msgid "Generate Stocktake Report" -msgstr "" +msgstr "Gerar Relatório de Balanço" #: templates/js/translated/part.js:901 msgid "Stocktake report scheduled" -msgstr "" +msgstr "Relatório de balanço agendado" #: templates/js/translated/part.js:1050 msgid "No stocktake information available" -msgstr "" +msgstr "Nenhuma informação de balanço disponível" #: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 msgid "Edit Stocktake Entry" -msgstr "" +msgstr "Editar Lançamento de Balanço" #: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 msgid "Delete Stocktake Entry" -msgstr "" +msgstr "Apagar Lançamento de Balanço" #: templates/js/translated/part.js:1281 msgid "No variants found" -msgstr "" +msgstr "Nenhuma variante encontrada" #: templates/js/translated/part.js:1599 msgid "No part parameter templates found" -msgstr "" +msgstr "Nenhum modelo parâmetro de peça encontrado" #: templates/js/translated/part.js:1662 msgid "Edit Part Parameter Template" -msgstr "" +msgstr "Editar Modelo de Parâmetro da Peça" #: templates/js/translated/part.js:1674 msgid "Any parameters which reference this template will also be deleted" -msgstr "" +msgstr "Quaisquer parâmetros que se referencie este modelo serão excluídos" #: templates/js/translated/part.js:1682 msgid "Delete Part Parameter Template" -msgstr "" +msgstr "Excluir Modelo de Parâmetro de Peça" #: templates/js/translated/part.js:1716 #: templates/js/translated/purchase_order.js:1651 msgid "No purchase orders found" -msgstr "" +msgstr "Nenhum pedido de compra encontrado" #: templates/js/translated/part.js:1860 #: templates/js/translated/purchase_order.js:2150 #: templates/js/translated/return_order.js:756 #: templates/js/translated/sales_order.js:1875 msgid "This line item is overdue" -msgstr "" +msgstr "Este item de linha está atrasado" #: templates/js/translated/part.js:1906 #: templates/js/translated/purchase_order.js:2217 msgid "Receive line item" -msgstr "" +msgstr "Receber item de linha" #: templates/js/translated/part.js:1969 msgid "Delete part relationship" -msgstr "" +msgstr "Excluir relação de peças" #: templates/js/translated/part.js:1991 msgid "Delete Part Relationship" -msgstr "" +msgstr "Excluir Relação de Peça" #: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 msgid "No parts found" -msgstr "" +msgstr "Nenhuma peça encontrada" #: templates/js/translated/part.js:2200 msgid "Set the part category for the selected parts" -msgstr "" +msgstr "Definir a categoria das peças selecionadas" #: templates/js/translated/part.js:2205 msgid "Set Part Category" -msgstr "" +msgstr "Definir Categoria da Peça" #: templates/js/translated/part.js:2235 msgid "Set category" -msgstr "" +msgstr "Definir categoria" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "peça" #: templates/js/translated/part.js:2288 msgid "parts" -msgstr "" +msgstr "peças" #: templates/js/translated/part.js:2384 msgid "No category" -msgstr "" +msgstr "Nenhuma categoria" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2640 msgid "Display as list" -msgstr "" +msgstr "Visualizar como lista" #: templates/js/translated/part.js:2547 msgid "Display as grid" -msgstr "" +msgstr "Exibir como grade" #: templates/js/translated/part.js:2645 msgid "No subcategories found" -msgstr "" +msgstr "Nenhuma subcategoria encontrada" #: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "" +msgstr "Exibir como árvore" #: templates/js/translated/part.js:2761 msgid "Load Subcategories" -msgstr "" +msgstr "Carregar Subcategorias" #: templates/js/translated/part.js:2777 msgid "Subscribed category" -msgstr "" +msgstr "Categoria inscrita" #: templates/js/translated/part.js:2854 msgid "No test templates matching query" -msgstr "" +msgstr "Nenhum modelo de teste corresponde à consulta" #: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436 msgid "Edit test result" -msgstr "" +msgstr "Editar resultados de teste" #: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437 #: templates/js/translated/stock.js:1699 msgid "Delete test result" -msgstr "" +msgstr "Excluir resultado do teste" #: templates/js/translated/part.js:2910 msgid "This test is defined for a parent part" -msgstr "" +msgstr "Este teste é definido para uma peça parental" #: templates/js/translated/part.js:2926 msgid "Edit Test Result Template" -msgstr "" +msgstr "Editar Modelo de Resultado de Teste" #: templates/js/translated/part.js:2940 msgid "Delete Test Result Template" -msgstr "" +msgstr "Excluir Modelo de Resultado de Teste" #: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020 msgid "No date specified" -msgstr "" +msgstr "Nenhuma data especificada" #: templates/js/translated/part.js:3022 msgid "Specified date is in the past" -msgstr "" +msgstr "Data especificada está no passado" #: templates/js/translated/part.js:3028 msgid "Speculative" -msgstr "" +msgstr "Especulativo" #: templates/js/translated/part.js:3078 msgid "No scheduling information available for this part" -msgstr "" +msgstr "Nenhuma informação de agendamento para esta peça" #: templates/js/translated/part.js:3084 msgid "Error fetching scheduling information for this part" -msgstr "" +msgstr "Erro ao obter informações de agendamento para esta peça" #: templates/js/translated/part.js:3180 msgid "Scheduled Stock Quantities" -msgstr "" +msgstr "Quantidades de Estoque Agendadas" #: templates/js/translated/part.js:3196 msgid "Maximum Quantity" -msgstr "" +msgstr "Quantidade Máxima" #: templates/js/translated/part.js:3241 msgid "Minimum Stock Level" -msgstr "" +msgstr "Nível Mínimo de Estoque" #: templates/js/translated/plugin.js:46 msgid "No plugins found" -msgstr "" +msgstr "Nenhum plug-in encontrado" #: templates/js/translated/plugin.js:58 msgid "This plugin is no longer installed" -msgstr "" +msgstr "Este plug-in não está mais instalado" #: templates/js/translated/plugin.js:60 msgid "This plugin is active" -msgstr "" +msgstr "Este plug-in está ativo" #: templates/js/translated/plugin.js:62 msgid "This plugin is installed but not active" -msgstr "" +msgstr "Este plug-in está instalado mas não está ativo" #: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:186 msgid "Disable Plugin" -msgstr "" +msgstr "Desativar Plug-in" #: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:186 msgid "Enable Plugin" -msgstr "" +msgstr "Habilitar Plug-in" #: templates/js/translated/plugin.js:158 msgid "The Plugin was installed" -msgstr "" +msgstr "O Plug-in foi instalado" #: templates/js/translated/plugin.js:177 msgid "Are you sure you want to enable this plugin?" -msgstr "" +msgstr "Tem certeza que deseja habilitar este plug-in?" #: templates/js/translated/plugin.js:181 msgid "Are you sure you want to disable this plugin?" -msgstr "" +msgstr "Tem certeza que deseja desabilitar este plug-in?" #: templates/js/translated/plugin.js:189 msgid "Enable" -msgstr "" +msgstr "Habilitar" #: templates/js/translated/plugin.js:189 msgid "Disable" -msgstr "" +msgstr "Desabilitar" #: templates/js/translated/plugin.js:203 msgid "Plugin updated" -msgstr "" +msgstr "Plug-in atualizado" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" -msgstr "" +msgstr "Erro ao buscar dados monetários" #: templates/js/translated/pricing.js:321 msgid "No BOM data available" -msgstr "" +msgstr "Nenhum dado da BOM disponível" #: templates/js/translated/pricing.js:463 msgid "No supplier pricing data available" @@ -12038,15 +12309,15 @@ msgstr "" #: templates/js/translated/pricing.js:916 msgid "Sale Price History" -msgstr "" +msgstr "Histórico de Preço de Venda" #: templates/js/translated/pricing.js:1005 msgid "No variant data available" -msgstr "" +msgstr "Nenhum dado de variante disponível" #: templates/js/translated/pricing.js:1045 msgid "Variant Part" -msgstr "" +msgstr "Peça Variante" #: templates/js/translated/purchase_order.js:169 msgid "Select purchase order to duplicate" @@ -12078,7 +12349,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:450 msgid "Complete Purchase Order" -msgstr "Concluir Pedido de Compra" +msgstr "" #: templates/js/translated/purchase_order.js:467 #: templates/js/translated/return_order.js:210 @@ -12191,63 +12462,63 @@ msgstr "" #: templates/js/translated/purchase_order.js:1276 msgid "Serials" -msgstr "" +msgstr "Seriais" #: templates/js/translated/purchase_order.js:1301 msgid "Order Code" -msgstr "" +msgstr "Código do Pedido" #: templates/js/translated/purchase_order.js:1303 msgid "Quantity to Receive" -msgstr "" +msgstr "Quantidade a Receber" #: templates/js/translated/purchase_order.js:1329 #: templates/js/translated/return_order.js:561 msgid "Confirm receipt of items" -msgstr "" +msgstr "Confirmar o recebimento dos itens" #: templates/js/translated/purchase_order.js:1330 msgid "Receive Purchase Order Items" -msgstr "" +msgstr "Receber Itens do Pedido de Compra" #: templates/js/translated/purchase_order.js:1398 msgid "Scan Item Barcode" -msgstr "" +msgstr "Escanar o Código de Barras do Item" #: templates/js/translated/purchase_order.js:1399 msgid "Scan barcode on incoming item (must not match any existing stock items)" -msgstr "" +msgstr "Ler código de barras no item de entrada (não deve corresponder a nenhum item de estoque existente)" #: templates/js/translated/purchase_order.js:1413 msgid "Invalid barcode data" -msgstr "" +msgstr "Dados do código de barras inválido" #: templates/js/translated/purchase_order.js:1678 #: templates/js/translated/return_order.js:286 #: templates/js/translated/sales_order.js:774 #: templates/js/translated/sales_order.js:998 msgid "Order is overdue" -msgstr "" +msgstr "O pedido está atrasado" #: templates/js/translated/purchase_order.js:1744 #: templates/js/translated/return_order.js:354 #: templates/js/translated/sales_order.js:851 #: templates/js/translated/sales_order.js:1011 msgid "Items" -msgstr "" +msgstr "Itens" #: templates/js/translated/purchase_order.js:1840 msgid "All selected Line items will be deleted" -msgstr "" +msgstr "Todos os Itens de Linha selecionadas serão excluídos" #: templates/js/translated/purchase_order.js:1858 msgid "Delete selected Line items?" -msgstr "" +msgstr "Excluir itens de linha selecionados?" #: templates/js/translated/purchase_order.js:1913 #: templates/js/translated/sales_order.js:2070 msgid "Duplicate Line Item" -msgstr "" +msgstr "Duplicar Item de Linha" #: templates/js/translated/purchase_order.js:1928 #: templates/js/translated/return_order.js:476 @@ -12306,53 +12577,53 @@ msgstr "" #: templates/js/translated/return_order.js:134 msgid "Create Return Order" -msgstr "" +msgstr "Criar Pedido de Devolução" #: templates/js/translated/return_order.js:149 msgid "Edit Return Order" -msgstr "" +msgstr "Editar Pedido de Devolução" #: templates/js/translated/return_order.js:169 msgid "Issue Return Order" -msgstr "" +msgstr "Emitir Pedido de Devolução" #: templates/js/translated/return_order.js:186 msgid "Are you sure you wish to cancel this Return Order?" -msgstr "" +msgstr "Tem certeza que deseja cancelar este Pedido de Devolução?" #: templates/js/translated/return_order.js:193 msgid "Cancel Return Order" -msgstr "" +msgstr "Cancelar Pedido de Devolução" #: templates/js/translated/return_order.js:218 msgid "Complete Return Order" -msgstr "" +msgstr "Completar Pedido de Devolução" #: templates/js/translated/return_order.js:266 msgid "No return orders found" -msgstr "" +msgstr "Nenhum pedido de devolução encontrado" #: templates/js/translated/return_order.js:300 #: templates/js/translated/sales_order.js:788 msgid "Invalid Customer" -msgstr "" +msgstr "Cliente Inválido" #: templates/js/translated/return_order.js:562 msgid "Receive Return Order Items" -msgstr "" +msgstr "Receber Itens do Pedido de Devolução" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" -msgstr "" +msgstr "Nenhum item de linha correspondente" #: templates/js/translated/return_order.js:798 msgid "Mark item as received" -msgstr "" +msgstr "Marcar item como recebido" #: templates/js/translated/sales_order.js:161 msgid "Create Sales Order" -msgstr "" +msgstr "Criar Pedido de Venda" #: templates/js/translated/sales_order.js:176 msgid "Edit Sales Order" @@ -12453,15 +12724,15 @@ msgstr "" #: templates/js/translated/sales_order.js:1048 msgid "Tracking" -msgstr "" +msgstr "Rastreamento" #: templates/js/translated/sales_order.js:1052 msgid "Invoice" -msgstr "" +msgstr "Fatura" #: templates/js/translated/sales_order.js:1219 msgid "Add Shipment" -msgstr "" +msgstr "Adicionar Envio" #: templates/js/translated/sales_order.js:1270 msgid "Confirm stock allocation" @@ -12500,16 +12771,16 @@ msgstr "" #: templates/js/translated/sales_order.js:2008 msgid "Allocate serial numbers" -msgstr "" +msgstr "Alocar números de série" #: templates/js/translated/sales_order.js:2012 msgid "Purchase stock" -msgstr "" +msgstr "Comprar estoque" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" -msgstr "" +msgstr "Calcular preço" #: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been shipped" @@ -12523,17 +12794,17 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" -msgstr "" +msgstr "Atualizar Preço Unitário" #: templates/js/translated/search.js:270 msgid "No results" -msgstr "" +msgstr "Nenhum resultado" #: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" -msgstr "" +msgstr "Inserir entrada de pesquisa" #: templates/js/translated/search.js:342 msgid "result" @@ -12557,11 +12828,11 @@ msgstr "" #: templates/js/translated/stock.js:129 msgid "Confirm Stock Serialization" -msgstr "" +msgstr "Confirmar Serialização de Estoque" #: templates/js/translated/stock.js:139 msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" -msgstr "" +msgstr "Ícone padrão para todas as locações que não têm um ícone definido (opcional) - Explorar todos os ícones disponíveis em" #: templates/js/translated/stock.js:152 msgid "Parent stock location" @@ -12569,15 +12840,15 @@ msgstr "" #: templates/js/translated/stock.js:166 msgid "Add Location type" -msgstr "" +msgstr "Adicionar Tipo de Localização" #: templates/js/translated/stock.js:202 msgid "Edit Stock Location" -msgstr "" +msgstr "Editar Local de Estoque" #: templates/js/translated/stock.js:217 msgid "New Stock Location" -msgstr "" +msgstr "Novo Local de Estoque" #: templates/js/translated/stock.js:219 msgid "Create another location after this one" @@ -12617,31 +12888,31 @@ msgstr "" #: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" -msgstr "" +msgstr "Inserir quantidade inicial deste item de estoque" #: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "" +msgstr "Insira os números de série para novo estoque (ou deixe em branco)" #: templates/js/translated/stock.js:439 msgid "Stock item duplicated" -msgstr "" +msgstr "Item de estoque duplicado" #: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" -msgstr "" +msgstr "Duplicar Item de Estoque" #: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" -msgstr "" +msgstr "Você tem certeza que deseja excluir este item de estoque?" #: templates/js/translated/stock.js:480 msgid "Delete Stock Item" -msgstr "" +msgstr "Excluir Item de Estoque" #: templates/js/translated/stock.js:501 msgid "Edit Stock Item" -msgstr "" +msgstr "Editar Item do Estoque" #: templates/js/translated/stock.js:543 msgid "Create another item after this one" @@ -12709,55 +12980,55 @@ msgstr "" #: templates/js/translated/stock.js:1024 msgid "Transfer Stock" -msgstr "" +msgstr "Transferir Estoque" #: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "" +msgstr "Mover" #: templates/js/translated/stock.js:1031 msgid "Count Stock" -msgstr "" +msgstr "Contar Estoque" #: templates/js/translated/stock.js:1032 msgid "Count" -msgstr "" +msgstr "Contar" #: templates/js/translated/stock.js:1036 msgid "Remove Stock" -msgstr "" +msgstr "Remover Estoque" #: templates/js/translated/stock.js:1037 msgid "Take" -msgstr "" +msgstr "Pegar" #: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "" +msgstr "Adicionar Estoque" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" -msgstr "" +msgstr "Adicionar" #: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "" +msgstr "Excluir Estoque" #: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" -msgstr "" +msgstr "Quantidade não pode ser ajustada para estoque serializado" #: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" -msgstr "" +msgstr "Especifique quantidade no estoque" #: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" -msgstr "" +msgstr "Selecionar Itens de Estoque" #: templates/js/translated/stock.js:1178 msgid "Select at least one available stock item" -msgstr "" +msgstr "Selecione ao menos um item de estoque disponível" #: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" @@ -12765,83 +13036,83 @@ msgstr "" #: templates/js/translated/stock.js:1360 msgid "PASS" -msgstr "" +msgstr "PASSOU" #: templates/js/translated/stock.js:1362 msgid "FAIL" -msgstr "" +msgstr "FALHOU" #: templates/js/translated/stock.js:1367 msgid "NO RESULT" -msgstr "" +msgstr "SEM RESULTADO" #: templates/js/translated/stock.js:1429 msgid "Pass test" -msgstr "" +msgstr "Passou no teste" #: templates/js/translated/stock.js:1432 msgid "Add test result" -msgstr "" +msgstr "Adicionar resultado de teste" #: templates/js/translated/stock.js:1456 msgid "No test results found" -msgstr "" +msgstr "Nenhum resultado de teste encontrado" #: templates/js/translated/stock.js:1520 msgid "Test Date" -msgstr "" +msgstr "Data do Teste" #: templates/js/translated/stock.js:1682 msgid "Edit Test Result" -msgstr "" +msgstr "Editar Resultado do Teste" #: templates/js/translated/stock.js:1704 msgid "Delete Test Result" -msgstr "" +msgstr "Excluir Resultado do Teste" #: templates/js/translated/stock.js:1736 msgid "In production" -msgstr "" +msgstr "Em produção" #: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" -msgstr "" +msgstr "Instalado em Item de Estoque" #: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" -msgstr "" +msgstr "Atribuir para o Pedido de Venda" #: templates/js/translated/stock.js:1754 msgid "No stock location set" -msgstr "" +msgstr "Sem local de estoque definido" #: templates/js/translated/stock.js:1810 msgid "Change stock status" -msgstr "" +msgstr "Mudar estado do estoque" #: templates/js/translated/stock.js:1819 msgid "Merge stock" -msgstr "" +msgstr "Mesclar estoque" #: templates/js/translated/stock.js:1868 msgid "Delete stock" -msgstr "" +msgstr "Excluir estoque" #: templates/js/translated/stock.js:1923 msgid "stock items" -msgstr "" +msgstr "itens de estoque" #: templates/js/translated/stock.js:1928 msgid "Scan to location" -msgstr "" +msgstr "Escanear para local" #: templates/js/translated/stock.js:1939 msgid "Stock Actions" -msgstr "" +msgstr "Ações de Estoque" #: templates/js/translated/stock.js:1983 msgid "Load installed items" -msgstr "" +msgstr "Carregar itens instalados" #: templates/js/translated/stock.js:2061 msgid "Stock item is in production" @@ -12922,11 +13193,11 @@ msgstr "" #: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "" +msgstr "Detalhes" #: templates/js/translated/stock.js:2821 msgid "No changes" -msgstr "" +msgstr "Nenhuma mudança" #: templates/js/translated/stock.js:2833 msgid "Part information unavailable" @@ -12962,15 +13233,15 @@ msgstr "" #: templates/js/translated/stock.js:2976 msgid "Added" -msgstr "" +msgstr "Adicionado" #: templates/js/translated/stock.js:2984 msgid "Removed" -msgstr "" +msgstr "Removido" #: templates/js/translated/stock.js:3056 msgid "No installed items" -msgstr "" +msgstr "Nenhum item instalado" #: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" @@ -12990,7 +13261,7 @@ msgstr "" #: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" -msgstr "" +msgstr "O Item de Estoque conecta a uma peça que é um BOM deste Item de Estoque" #: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" @@ -13083,58 +13354,58 @@ msgstr "" #: templates/js/translated/table_filters.js:279 #: templates/js/translated/table_filters.js:707 msgid "Include subcategories" -msgstr "" +msgstr "Incluir subcategorias" #: templates/js/translated/table_filters.js:287 #: templates/js/translated/table_filters.js:755 msgid "Subscribed" -msgstr "" +msgstr "Inscrito" #: templates/js/translated/table_filters.js:298 #: templates/js/translated/table_filters.js:380 msgid "Is Serialized" -msgstr "" +msgstr "É Serializado" #: templates/js/translated/table_filters.js:301 #: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" -msgstr "" +msgstr "Número de série GTE" #: templates/js/translated/table_filters.js:302 #: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" -msgstr "" +msgstr "Número de série maior ou igual a" #: templates/js/translated/table_filters.js:305 #: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" -msgstr "" +msgstr "Número de série LTE" #: templates/js/translated/table_filters.js:306 #: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" -msgstr "" +msgstr "Número de série menor ou igual a" #: templates/js/translated/table_filters.js:309 #: templates/js/translated/table_filters.js:310 #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "" +msgstr "Número de série" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 msgid "Batch code" -msgstr "" +msgstr "Código do lote" #: templates/js/translated/table_filters.js:325 #: templates/js/translated/table_filters.js:696 msgid "Active parts" -msgstr "" +msgstr "Peças Ativas" #: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" -msgstr "" +msgstr "Mostrar estoque de peças ativas" #: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13344,299 +13611,304 @@ msgstr "" #: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" -msgstr "" +msgstr "Ocultar/Mostrar paginação" #: templates/js/translated/tables.js:555 msgid "Toggle" -msgstr "" +msgstr "Alternar" #: templates/js/translated/tables.js:558 msgid "Columns" -msgstr "" +msgstr "Colunas" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "" +msgstr "Todos" #: templates/navbar.html:45 msgid "Buy" -msgstr "" +msgstr "Comprar" #: templates/navbar.html:57 msgid "Sell" -msgstr "" +msgstr "Vender" #: templates/navbar.html:121 msgid "Show Notifications" -msgstr "" +msgstr "Mostrar Notificações" #: templates/navbar.html:124 msgid "New Notifications" -msgstr "" +msgstr "Novas Notificações" #: templates/navbar.html:144 users/models.py:188 msgid "Admin" -msgstr "" +msgstr "Administrador" #: templates/navbar.html:148 msgid "Logout" -msgstr "" +msgstr "Encerrar sessão" #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" -msgstr "" +msgstr "Salvar" #: templates/notifications.html:9 msgid "Show all notifications and history" -msgstr "" +msgstr "Mostrar todas as notificações e histórico" #: templates/qr_code.html:11 msgid "QR data not provided" -msgstr "" +msgstr "Nenhum dado QR providenciado" #: templates/registration/logged_out.html:7 msgid "You were logged out successfully." -msgstr "" +msgstr "Você foi desconectado com sucesso." #: templates/registration/logged_out.html:9 msgid "Log in again" -msgstr "" +msgstr "Entrar novamente" #: templates/search.html:9 msgid "Show full search results" -msgstr "" +msgstr "Mostrar todos os resultados da pesquisa" #: templates/search.html:12 msgid "Clear search" -msgstr "" +msgstr "Limpar pesquisa" #: templates/search.html:15 msgid "Close search menu" -msgstr "" +msgstr "Fechar menu de pesuisa" #: templates/socialaccount/authentication_error.html:5 msgid "Social Network Login Failure" -msgstr "" +msgstr "Falha ao acessar a rede social" #: templates/socialaccount/authentication_error.html:8 msgid "Account Login Failure" -msgstr "" +msgstr "Falha ao acessar conta" #: templates/socialaccount/authentication_error.html:11 msgid "An error occurred while attempting to login via your social network account." -msgstr "" +msgstr "Ocorreu um erro ao tentar entrar com a sua conta de rede social." #: templates/socialaccount/authentication_error.html:13 msgid "Contact your system administrator for further information." -msgstr "" +msgstr "Contate seu administrador de sistema para mais informações." #: templates/socialaccount/login.html:13 #, python-format msgid "Connect %(provider)s" -msgstr "" +msgstr "Conectar %(provider)s" #: templates/socialaccount/login.html:15 #, python-format msgid "You are about to connect a new third party account from %(provider)s." -msgstr "" +msgstr "Você está prestes a conectar uma nova conta de terceiros do %(provider)s." #: templates/socialaccount/login.html:17 #, python-format msgid "Sign In Via %(provider)s" -msgstr "" +msgstr "Entrar através %(provider)s" #: templates/socialaccount/login.html:19 #, python-format msgid "You are about to sign in using a third party account from %(provider)s." -msgstr "" +msgstr "Você está prestes a entrar utilizando uma conta de terceiros de %(provider)s." #: templates/socialaccount/login.html:24 msgid "Continue" -msgstr "" +msgstr "Continuar" #: templates/socialaccount/login.html:29 msgid "Invalid SSO Provider" -msgstr "" +msgstr "Provedor SSO inválido" #: templates/socialaccount/login.html:31 msgid "The selected SSO provider is invalid, or has not been correctly configured" +msgstr "O provedor de SSO selecionado é inválido ou não foi configurado corretamente" + +#: templates/socialaccount/signup.html:11 +#, python-format +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " msgstr "" -#: templates/socialaccount/signup.html:10 -#, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 msgid "Provider has not been configured" -msgstr "" +msgstr "O provedor não foi configurado" #: templates/socialaccount/snippets/provider_list.html:35 msgid "No SSO providers have been configured" -msgstr "" +msgstr "Nenhum provedor de SSO foi configurado" #: templates/stats.html:13 msgid "Instance Name" -msgstr "" +msgstr "Nome da Instância" #: templates/stats.html:18 msgid "Database" -msgstr "" +msgstr "Banco de Dados" #: templates/stats.html:26 msgid "Server is running in debug mode" -msgstr "" +msgstr "O servidor está executando no modo de depuração" #: templates/stats.html:33 msgid "Docker Mode" -msgstr "" +msgstr "Modo Docker" #: templates/stats.html:34 msgid "Server is deployed using docker" -msgstr "" +msgstr "O servidor está implantado usando o docker" #: templates/stats.html:39 msgid "Plugin Support" -msgstr "" +msgstr "Suporte a Extensões" #: templates/stats.html:43 msgid "Plugin support enabled" -msgstr "" +msgstr "Suporte a extensões habilitado" #: templates/stats.html:45 msgid "Plugin support disabled" -msgstr "" +msgstr "Suporte de extensão desativado" #: templates/stats.html:52 msgid "Server status" -msgstr "" +msgstr "Estado do Servidor" #: templates/stats.html:55 msgid "Healthy" -msgstr "" +msgstr "Saudável" #: templates/stats.html:57 msgid "Issues detected" -msgstr "" +msgstr "Problemas detectados" #: templates/stats.html:64 msgid "Background Worker" -msgstr "" +msgstr "Funcionário em segundo plano" #: templates/stats.html:67 msgid "Background worker not running" -msgstr "" +msgstr "Trabalhador de fundo não está em execução" #: templates/stats.html:75 msgid "Email Settings" -msgstr "" +msgstr "Configurações de Email" #: templates/stats.html:78 msgid "Email settings not configured" -msgstr "" +msgstr "Configurações de e-mail não configuradas" #: templates/yesnolabel.html:4 msgid "Yes" -msgstr "" +msgstr "Sim" #: templates/yesnolabel.html:6 msgid "No" -msgstr "" - -#: users/admin.py:103 -msgid "Users" -msgstr "" +msgstr "Não" #: users/admin.py:104 +msgid "Users" +msgstr "Usuários" + +#: users/admin.py:105 msgid "Select which users are assigned to this group" -msgstr "" +msgstr "Selecione quais usuários estão atribuídos a este grupo" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" -msgstr "" +msgstr "Os seguintes usuários são membros de vários grupos" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" -msgstr "" +msgstr "Informações pessoais" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" -msgstr "" +msgstr "Permissões" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" -msgstr "" +msgstr "Datas importantes" #: users/authentication.py:29 users/models.py:127 msgid "Token has been revoked" -msgstr "" +msgstr "O token foi revogado" #: users/authentication.py:32 msgid "Token has expired" -msgstr "" +msgstr "Token expirou" #: users/models.py:70 msgid "API Token" -msgstr "" +msgstr "Token da API" #: users/models.py:71 msgid "API Tokens" -msgstr "" +msgstr "Tokens de API" #: users/models.py:107 msgid "Token Name" -msgstr "" +msgstr "Nome do Token" #: users/models.py:108 msgid "Custom token name" -msgstr "" +msgstr "Nome de token personalizado" #: users/models.py:114 msgid "Token expiry date" -msgstr "" +msgstr "Data de validade do token" #: users/models.py:122 msgid "Last Seen" -msgstr "" +msgstr "Visto pela Última Vez" #: users/models.py:123 msgid "Last time the token was used" -msgstr "" +msgstr "Última vez que o token foi usado" #: users/models.py:127 msgid "Revoked" -msgstr "" +msgstr "Revogado" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" -msgstr "" - -#: users/models.py:381 -msgid "Group" -msgstr "" - -#: users/models.py:385 -msgid "View" -msgstr "" - -#: users/models.py:385 -msgid "Permission to view items" -msgstr "" - -#: users/models.py:389 -msgid "Permission to add items" -msgstr "" +msgstr "Permissão definida" #: users/models.py:393 -msgid "Change" -msgstr "" +msgid "Group" +msgstr "Grupo" -#: users/models.py:395 -msgid "Permissions to edit items" -msgstr "" +#: users/models.py:397 +msgid "View" +msgstr "Visualizar" + +#: users/models.py:397 +msgid "Permission to view items" +msgstr "Permissão para ver itens" #: users/models.py:401 -msgid "Permission to delete items" -msgstr "" +msgid "Permission to add items" +msgstr "Permissão para adicionar itens" + +#: users/models.py:405 +msgid "Change" +msgstr "Alterar" + +#: users/models.py:407 +msgid "Permissions to edit items" +msgstr "Permissões para editar itens" + +#: users/models.py:413 +msgid "Permission to delete items" +msgstr "Permissão para excluir itens" diff --git a/InvenTree/locale/pt_br/LC_MESSAGES/django.po b/InvenTree/locale/pt_br/LC_MESSAGES/django.po index 0c2397c2cf..d05d3334d3 100644 --- a/InvenTree/locale/pt_br/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt_br/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-16 11:14+0000\n" +"POT-Creation-Date: 2024-01-30 05:37+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,11 +18,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:165 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:417 +#: InvenTree/api.py:418 msgid "User does not have permission to view this model" msgstr "" @@ -44,7 +44,7 @@ msgstr "" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "" @@ -52,18 +52,18 @@ msgstr "" msgid "Enter date" msgstr "" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 #: company/models.py:826 company/templates/company/sidebar.html:37 #: order/models.py:1261 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3148 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:224 stock/models.py:2260 stock/models.py:2364 +#: stock/serializers.py:428 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 stock/serializers.py:1023 stock/serializers.py:1112 +#: stock/serializers.py:1269 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -124,46 +124,46 @@ msgstr "" msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:394 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:459 order/models.py:521 order/models.py:723 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:467 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:496 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:528 InvenTree/helpers.py:571 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:559 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:589 InvenTree/helpers.py:596 InvenTree/helpers.py:615 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:625 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:630 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:748 msgid "Remove HTML tags from this value" msgstr "" @@ -199,6 +199,134 @@ msgstr "" msgid "Supplied URL is not a valid image file" msgstr "" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + #: InvenTree/magic_login.py:27 #, python-brace-format msgid "[{site.name}] Log in to the app" @@ -255,7 +383,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:488 stock/models.py:2359 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -267,7 +395,7 @@ msgstr "" #: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 #: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:273 order/models.py:1266 order/models.py:1665 #: part/admin.py:55 part/models.py:902 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 @@ -283,7 +411,7 @@ msgid "Link" msgstr "" #: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: stock/models.py:814 msgid "Link to external URL" msgstr "" @@ -344,9 +472,10 @@ msgid "Invalid choice" msgstr "" #: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: common/serializers.py:365 company/models.py:606 label/models.py:115 +#: part/models.py:838 part/models.py:3575 plugin/models.py:40 +#: report/models.py:172 stock/models.py:81 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -374,13 +503,13 @@ msgstr "" #: part/templates/part/part_scheduling.html:12 report/models.py:185 #: report/models.py:615 report/models.py:660 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:87 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2132 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -399,7 +528,7 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:830 stock/models.py:88 msgid "Description (optional)" msgstr "" @@ -542,130 +671,6 @@ msgstr "" msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - #: InvenTree/status.py:66 part/serializers.py:1082 msgid "Background worker check failed" msgstr "" @@ -878,10 +883,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -931,7 +932,7 @@ msgid "Build must be cancelled before it can be deleted" msgstr "" #: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2516 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" @@ -939,7 +940,7 @@ msgstr "" #: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2525 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -951,8 +952,8 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1736 +#: templates/js/translated/build.js:2621 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" @@ -962,7 +963,7 @@ msgstr "" #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2557 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -977,7 +978,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" @@ -1005,14 +1006,14 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 +#: order/models.py:1254 order/models.py:1954 part/admin.py:416 #: part/models.py:3992 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2508 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1051,7 +1052,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:201 stock/serializers.py:611 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1059,8 +1060,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1304 templates/js/translated/build.js:1735 +#: templates/js/translated/build.js:2155 templates/js/translated/build.js:2328 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1096,8 +1097,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:219 build/serializers.py:946 +#: templates/js/translated/build.js:1723 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "" @@ -1138,13 +1139,13 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:262 build/serializers.py:279 order/serializers.py:525 +#: stock/models.py:818 stock/serializers.py:1234 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:266 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" @@ -1163,8 +1164,8 @@ msgstr "" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:277 order/models.py:480 order/models.py:1999 +#: templates/js/translated/build.js:2240 msgid "Completion Date" msgstr "" @@ -1172,7 +1173,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:291 templates/js/translated/build.js:2200 msgid "Issued by" msgstr "" @@ -1188,7 +1189,7 @@ msgstr "" #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2212 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 @@ -1205,7 +1206,7 @@ msgstr "" #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:814 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" @@ -1221,7 +1222,7 @@ msgstr "" #: build/models.py:321 common/models.py:126 order/admin.py:18 #: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2137 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1255,14 +1256,14 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 +#: build/models.py:860 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:518 order/serializers.py:393 #: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: stock/models.py:659 stock/models.py:1469 stock/serializers.py:399 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:865 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" @@ -1270,10 +1271,10 @@ msgstr "" msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/models.py:1293 build/models.py:1551 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 #: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: order/models.py:1237 order/models.py:1877 order/serializers.py:1282 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 #: part/forms.py:48 part/models.py:3135 part/models.py:3965 #: part/templates/part/part_pricing.html:16 @@ -1285,15 +1286,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:158 stock/serializers.py:390 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1361 +#: templates/js/translated/build.js:1738 templates/js/translated/build.js:2350 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1330,11 +1331,11 @@ msgstr "" msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1393 order/models.py:1828 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1399 order/models.py:1831 msgid "Allocation quantity must be greater than zero" msgstr "" @@ -1346,12 +1347,12 @@ msgstr "" msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1538 build/serializers.py:799 order/serializers.py:1126 +#: order/serializers.py:1147 stock/serializers.py:493 stock/serializers.py:961 +#: stock/serializers.py:1073 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1737 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1379,73 +1380,73 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1314 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:533 order/serializers.py:1286 +#: stock/serializers.py:410 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:509 #: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: stock/serializers.py:421 stock/serializers.py:576 stock/serializers.py:672 +#: stock/serializers.py:1105 stock/serializers.py:1353 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2365 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1458,32 +1459,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/serializers.py:504 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: order/models.py:1978 order/serializers.py:541 stock/admin.py:163 +#: stock/serializers.py:723 stock/serializers.py:1241 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2184 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1493,156 +1494,156 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:278 order/serializers.py:1189 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:974 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1180 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1432 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" @@ -1776,7 +1777,7 @@ msgstr "" #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2232 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1810,7 +1811,7 @@ msgstr "" #: build/templates/build/build_base.html:190 #: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: order/models.py:1613 order/models.py:1765 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1832,7 +1833,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2149 msgid "Priority" msgstr "" @@ -1875,7 +1876,7 @@ msgstr "" #: build/templates/build/detail.html:80 stock/admin.py:161 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1372 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1889,7 +1890,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2192 msgid "Created" msgstr "" @@ -1988,11 +1989,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -3425,7 +3426,7 @@ msgid "Price break quantity" msgstr "" #: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: order/models.py:1311 order/models.py:2199 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 @@ -3623,6 +3624,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:328 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:334 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:340 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:346 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:361 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:361 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:363 +msgid "Lock" +msgstr "" + +#: common/serializers.py:363 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:365 +msgid "Task name" +msgstr "" + +#: common/serializers.py:367 +msgid "Function" +msgstr "" + +#: common/serializers.py:367 +msgid "Function name" +msgstr "" + +#: common/serializers.py:369 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:369 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:372 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:372 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3736,7 +3797,7 @@ msgstr "" #: company/models.py:268 company/models.py:377 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" @@ -3828,8 +3889,8 @@ msgstr "" msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 -#: stock/serializers.py:199 stock/templates/stock/item_base.html:142 +#: company/models.py:482 company/models.py:776 stock/models.py:746 +#: stock/serializers.py:200 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3890,7 +3951,7 @@ msgstr "" #: company/models.py:613 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2351 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" @@ -3967,7 +4028,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:506 msgid "Note" msgstr "" @@ -3980,7 +4041,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: stock/admin.py:222 stock/models.py:777 stock/serializers.py:1251 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 @@ -4084,9 +4145,9 @@ msgid "Delete image" msgstr "" #: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: order/models.py:1966 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:799 +#: stock/models.py:800 stock/serializers.py:1009 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4346,7 +4407,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:757 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4448,7 +4509,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:709 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4586,7 +4647,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2166 order/models.py:2217 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4623,7 +4684,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:273 order/models.py:1266 order/models.py:1665 msgid "Link to external page" msgstr "" @@ -4672,15 +4733,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:473 order/models.py:1992 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:474 order/models.py:1993 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:481 order/models.py:2000 msgid "Date order was completed" msgstr "" @@ -4696,15 +4757,15 @@ msgstr "" msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:912 order/models.py:1985 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:913 order/models.py:1986 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:917 order/models.py:1619 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" @@ -4771,8 +4832,8 @@ msgid "deleted" msgstr "" #: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1612 order/models.py:1764 order/models.py:2165 +#: order/models.py:2216 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" @@ -4794,7 +4855,7 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1396 stock/models.py:918 stock/serializers.py:327 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" @@ -4829,146 +4890,146 @@ msgstr "" msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1620 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1626 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1627 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1635 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1636 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 +#: order/models.py:1643 order/models.py:1854 order/serializers.py:1297 #: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1644 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1652 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1653 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1660 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1661 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1681 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1684 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1800 order/models.py:1802 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1809 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1812 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1815 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1834 order/serializers.py:1174 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1837 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1838 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1846 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1855 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1868 order/models.py:2173 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1869 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1878 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1955 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1967 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1979 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2158 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2174 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2180 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2181 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2192 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2193 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2200 msgid "Cost associated with return or repair for this line item" msgstr "" @@ -5292,8 +5353,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1621 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5579,7 +5640,7 @@ msgid "In Stock" msgstr "" #: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2609 #: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" @@ -5717,7 +5778,7 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:113 stock/models.py:167 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" @@ -5735,12 +5796,12 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:131 stock/models.py:94 stock/models.py:150 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:132 stock/models.py:151 msgid "Icon (optional)" msgstr "" @@ -5809,7 +5870,7 @@ msgstr "" #: part/models.py:879 part/models.py:3359 part/models.py:3800 #: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 @@ -6269,7 +6330,7 @@ msgstr "" msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 +#: part/models.py:3860 part/models.py:4296 stock/api.py:717 msgid "BOM Item" msgstr "" @@ -6349,7 +6410,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4111 stock/models.py:643 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -6393,7 +6454,7 @@ msgstr "" msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:333 msgid "Purchase currency of this stock item" msgstr "" @@ -7132,10 +7193,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7466,7 +7523,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2585 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7800,7 +7857,7 @@ msgstr "" msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:279 msgid "No author found" msgstr "" @@ -8089,9 +8146,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:804 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1359 +#: templates/js/translated/build.js:2348 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8115,12 +8172,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2341 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2345 msgid "Result" msgstr "" @@ -8204,7 +8261,7 @@ msgstr "" msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:199 stock/models.py:784 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" @@ -8229,7 +8286,7 @@ msgstr "" msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:254 stock/models.py:878 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8239,317 +8296,317 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:68 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:69 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:95 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:127 stock/models.py:766 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:125 stock/templates/stock/location.html:179 +#: stock/models.py:128 stock/templates/stock/location.html:179 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:192 msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:160 stock/models.py:927 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:161 stock/models.py:928 msgid "Select Owner" msgstr "" -#: stock/models.py:166 +#: stock/models.py:169 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:173 templates/js/translated/stock.js:2752 +#: stock/models.py:176 templates/js/translated/stock.js:2752 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:174 +#: stock/models.py:177 msgid "This is an external stock location" msgstr "" -#: stock/models.py:180 templates/js/translated/stock.js:2761 +#: stock/models.py:183 templates/js/translated/stock.js:2761 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:184 +#: stock/models.py:187 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:253 +#: stock/models.py:256 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:620 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:650 stock/serializers.py:224 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:667 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:677 stock/models.py:690 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:680 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:704 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:709 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:722 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:736 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:748 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:758 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:770 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:778 stock/serializers.py:1252 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:789 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:808 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:822 stock/serializers.py:1235 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:827 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:837 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:840 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:847 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:850 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:859 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:863 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:869 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:880 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:898 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:899 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:919 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:950 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1460 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1466 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1474 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1480 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1485 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1493 stock/serializers.py:456 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1560 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1564 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1567 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1570 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1573 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1576 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1583 stock/serializers.py:1149 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1587 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1595 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1600 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1804 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2261 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2320 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2326 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2341 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2345 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2352 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2360 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2364 msgid "Test notes" msgstr "" @@ -8557,161 +8614,161 @@ msgstr "" msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:215 +#: stock/serializers.py:216 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:329 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:391 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:404 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:411 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:422 stock/serializers.py:1106 stock/serializers.py:1354 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:429 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:439 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:494 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:501 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:502 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:507 stock/serializers.py:582 stock/serializers.py:678 +#: stock/serializers.py:728 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:515 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:523 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:530 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:542 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:577 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:612 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:642 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:673 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:710 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:716 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:978 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:982 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:986 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1010 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1016 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1024 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1034 stock/serializers.py:1280 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1113 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1118 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1119 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1124 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1125 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1135 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1223 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1242 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1270 msgid "Stock transaction notes" msgstr "" @@ -8848,7 +8905,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2116 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8914,7 +8971,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2373 msgid "No location set" msgstr "" @@ -9590,7 +9647,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2221 msgid "group" msgstr "" @@ -10255,7 +10312,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2552 msgid "Required Quantity" msgstr "" @@ -10624,7 +10681,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2496 msgid "Variant stock allowed" msgstr "" @@ -10644,26 +10701,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2591 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2595 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2597 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2599 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2582 msgid "Consumable item" msgstr "" @@ -10695,7 +10752,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2481 msgid "Required Part" msgstr "" @@ -10707,364 +10764,369 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2337 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1289 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1382 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1396 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1568 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1569 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1632 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1709 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1710 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1724 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1752 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1763 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1836 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1933 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1934 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1936 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1937 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1938 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1969 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2075 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2110 templates/js/translated/build.js:2475 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2124 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2170 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2206 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2382 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2383 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2398 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2410 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2451 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2452 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2470 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2500 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2535 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2587 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2613 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: templates/js/translated/build.js:2638 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2643 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2650 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2655 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2663 msgid "Remove stock allocation" msgstr "" @@ -11873,6 +11935,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12345,7 +12411,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12510,7 +12576,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12526,7 +12592,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -13167,10 +13233,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po index a7f704d788..68ab9f7807 100644 --- a/InvenTree/locale/ru/LC_MESSAGES/django.po +++ b/InvenTree/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "Конечная точка API не обнаружена" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "У пользователя недостаточно прав для просмотра этой модели!" @@ -43,7 +43,7 @@ msgstr "Недопустимое количество" msgid "Invalid quantity supplied ({exc})" msgstr "Недопустимое количество ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Подробности об ошибке можно найти в панели администратора" @@ -51,18 +51,18 @@ msgstr "Подробности об ошибке можно найти в пан msgid "Enter date" msgstr "Введите дату" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -72,7 +72,7 @@ msgstr "Введите дату" #: templates/js/translated/sales_order.js:1982 #: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" -msgstr "Заметки" +msgstr "Записи" #: InvenTree/format.py:164 #, python-brace-format @@ -123,154 +123,286 @@ msgstr "Указанный основной адрес электронной п msgid "The provided email domain is not approved." msgstr "Указанный домен электронной почты не утверждён." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Регистрация отключена." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "недопустимое количество" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Пустая строка серийного номера" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Повторяющийся серийный номер" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" -msgstr "" +msgstr "Недопустимый диапазон группы: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" -msgstr "" +msgstr "Диапазон группы {group} превышает допустимое количество ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Неверная последовательность групп: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Серийных номеров не найдено" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" -msgstr "" +msgstr "Число уникальных серийных номеров ({s}) должно соответствовать количеству ({q})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Удалить HTML теги из этого значения" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Ошибка соединения" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Сервер ответил неверным кодом статуса" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Произошло исключение" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Сервер ответил неверным значением Контент-Длина" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Изображение слишком большое" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Загрузка изображения превышен максимальный размер" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Удаленный сервер вернул пустой ответ" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Предоставленный URL не является допустимым файлом изображения" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Войти в приложение" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Болгарский" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Чешский" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Датский" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Немецкий" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Греческий" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Английский" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Испанский" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Испанский (Мексика)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Фарси / Персидский" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Финский" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Французский" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Иврит" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Хинди" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Венгерский" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Итальянский" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Японский" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Корейский" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Голландский" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Норвежский" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Польский" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Португальский" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Португальский (Бразильский диалект)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Русский" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "Словацкий" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Словенский" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Сербский" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Шведский" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Тайский" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Турецкий" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Вьетнамский" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Китайский (Упрощенный)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Китайский (Традиционный)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "[{site_name}] Войти в приложение" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "EMail" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Метаданные должны быть объектом python dict" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Метаданные плагина" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "Поле метаданных JSON для использования внешними плагинами" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Неправильно отформатированный шаблон" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Указан неизвестный ключ формата" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Отсутствует требуемый ключ формата" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Ссылочный идентификатор не может быть пустым" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Ссылка должна соответствовать шаблону {pattern}" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Номер ссылки слишком большой" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Файл не найден" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Отсутствует внешняя ссылка" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Вложения" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Выберите файл для вложения" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Выберите файл для вложения" msgid "Link" msgstr "Ссылка" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Ссылка на внешний URL" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Комментарий" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Комментарий к файлу" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Пользователь" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "дата загрузки" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Имя файла не должно быть пустым" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Неверная директория вложений" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Имя файла содержит запрещенные символы '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Отсутствует расширение для имени файла" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Вложение с таким именем файла уже существует" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Ошибка переименования файла" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "Повторяющиеся имена не могут существовать под одним и тем же родителем" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Неверный выбор" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Неверный выбор" msgid "Name" msgstr "Название" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,273 +531,149 @@ msgstr "Название" msgid "Description" msgstr "Описание" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Описание (необязательно)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "родитель" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Путь" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" -msgstr "Описание обновления (необязательное)" +msgstr "Записи о скидке (необязательно)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Данные штрих-кода" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Данные стороннего штрих-кода" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Хэш штрих-кода" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Уникальный хэш данных штрих-кода" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Обнаружен существующий штрих-код" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Ошибка сервера" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Сервер зарегистрировал ошибку." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Должно быть действительным номером" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Валюта" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Выберите валюту из доступных вариантов" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." -msgstr "" +msgstr "У вас недостаточно прав для изменения роли этого пользователя." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" +msgstr "Только суперпользователи могут создавать новых пользователей" + +#: InvenTree/serializers.py:466 +msgid "Your account has been created." +msgstr "Ваша учётная запись была успешно создана." + +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" -msgstr "" +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "Добро пожаловать в InvenTree" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." -msgstr "Ваш аккаунт был создан.\n\n" -"Чтобы получить доступ, используйте функцию сброса пароля (по адресу https://{domain})." - -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Имя файла" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Неверное значение" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Файл данных" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Выберите файл данных для загрузки" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Неподдерживаемый тип файла" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Файл слишком большой" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Столбцы в файле не найдены" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Строки данных в файле не найдены" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Строки данных в файле не найдены" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Столбцы данных не предоставлены" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Отсутствует обязательный столбец: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Повторяющийся столбец: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" -msgstr "" +msgstr "Удаленное изображение" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "ССЫЛКА файла изображения на удаленном сервере" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Загрузка изображений с удаленного URL-адреса не включена" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Чешский" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Датский" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Немецкий" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Греческий" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Английский" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Испанский" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Испанский (Мексика)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Фарси / Персидский" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Финский" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Французский" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Иврит" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Хинди" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Венгерский" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Итальянский" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Японский" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Корейский" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Голландский" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Норвежский" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Польский" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Португальский" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Португальский (Бразильский диалект)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Русский" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Словенский" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Шведский" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Тайский" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Турецкий" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Вьетнамский" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Китайский (Упрощенный)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Китайский (Традиционный)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Проверка фонового работника не удалась" @@ -713,7 +722,7 @@ msgstr "Возвращено" msgid "In Progress" msgstr "Выполняется" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -750,11 +759,11 @@ msgstr "Отслеживание устаревших запасов" #: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" -msgstr "Товар создан" +msgstr "Складская позиция создана" #: InvenTree/status_codes.py:96 msgid "Edited stock item" -msgstr "Отредактированный товар" +msgstr "Отредактированная складская позиция" #: InvenTree/status_codes.py:97 msgid "Assigned serial number" @@ -762,19 +771,19 @@ msgstr "Присвоенный серийный номер" #: InvenTree/status_codes.py:100 msgid "Stock counted" -msgstr "Склад подсчитан" +msgstr "Новое значение запасов установлено" #: InvenTree/status_codes.py:101 msgid "Stock manually added" -msgstr "Добавлен вручную" +msgstr "Запасы, добавленные вручную" #: InvenTree/status_codes.py:102 msgid "Stock manually removed" -msgstr "Удалено вручную" +msgstr "Запасы удаленные вручную" #: InvenTree/status_codes.py:105 msgid "Location changed" -msgstr "Расположение изменено" +msgstr "Место хранения изменено" #: InvenTree/status_codes.py:106 msgid "Stock updated" @@ -782,19 +791,19 @@ msgstr "Запас обновлен" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" -msgstr "Укомплектовано" +msgstr "Установленно в производимую деталь" #: InvenTree/status_codes.py:110 msgid "Removed from assembly" -msgstr "Удалено из сборки" +msgstr "Удалено из производимой детали" #: InvenTree/status_codes.py:112 msgid "Installed component item" -msgstr "Установленный элемент компонента" +msgstr "Установленный компонент" #: InvenTree/status_codes.py:113 msgid "Removed component item" -msgstr "Удален элемент компонента" +msgstr "Удаленный компонент" #: InvenTree/status_codes.py:116 msgid "Split from parent item" @@ -806,7 +815,7 @@ msgstr "Разбить дочерний элемент" #: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" -msgstr "Объединенные позиции на складе" +msgstr "Объединенные складские позиции" #: InvenTree/status_codes.py:123 msgid "Converted to variant" @@ -814,19 +823,19 @@ msgstr "Преобразовать в разновидность" #: InvenTree/status_codes.py:126 msgid "Build order output created" -msgstr "Создан вывод заказа сборки" +msgstr "Создан выход продукции для этого заказа на производство" #: InvenTree/status_codes.py:127 msgid "Build order output completed" -msgstr "Вывод заказа сборки завершён" +msgstr "Продукция заказа на производство завершена" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "Выходные данные заказа на сборку отклонены" +msgstr "Продукция заказа на производство отклонена" #: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" -msgstr "Потребляется по порядку сборки" +msgstr "Поглощен заказом на производство" #: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" @@ -838,7 +847,7 @@ msgstr "Получено по заказу на поставку" #: InvenTree/status_codes.py:138 msgid "Returned against Return Order" -msgstr "Возвращено против заказа на возврат" +msgstr "Возвращено по заказу на возврат" #: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" @@ -876,10 +885,6 @@ msgstr "Отклонить" msgid "Unknown database" msgstr "Неизвестная база данных" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Неверная физическая единица" @@ -890,15 +895,15 @@ msgstr "Неверный код валюты" #: InvenTree/validators.py:121 InvenTree/validators.py:137 msgid "Overage value must not be negative" -msgstr "Значение перегрузки не должно быть отрицательным" +msgstr "Значение избытка не должно быть отрицательным" #: InvenTree/validators.py:139 msgid "Overage must not exceed 100%" -msgstr "Перегрузка не может превысить 100%" +msgstr "Избыток не может превысить 100%" #: InvenTree/validators.py:145 msgid "Invalid value for overage" -msgstr "Неверное значение для возврата средств" +msgstr "Неверное значение для избытка" #: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" @@ -926,18 +931,18 @@ msgstr "О программе InvenTree" #: build/api.py:237 msgid "Build must be cancelled before it can be deleted" -msgstr "Сборка должна быть отменена перед удалением" +msgstr "Заказ на производство должен быть отменен перед удалением" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "Расходники" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -949,18 +954,18 @@ msgstr "Необязательно" msgid "Tracked" msgstr "Отслеживается" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" -msgstr "Выделено" +msgstr "Зарезервировано" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -970,16 +975,16 @@ msgstr "Выделено" msgid "Available" msgstr "Доступно" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" -msgstr "Порядок сборки" +msgstr "Заказ на производство" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -988,29 +993,29 @@ msgstr "Порядок сборки" #: templates/InvenTree/settings/sidebar.html:55 #: templates/js/translated/search.js:186 users/models.py:194 msgid "Build Orders" -msgstr "Заказы на сборку" +msgstr "Заказы на производство" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Неверный выбор для родительской сборки" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" -msgstr "" +msgstr "Деталь заказа на производства не может быть изменена" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" -msgstr "Ссылка на заказ" +msgstr "Ссылка на заказ на производство" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1018,27 +1023,27 @@ msgstr "Ссылка на заказ" msgid "Reference" msgstr "Отсылка" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" -msgstr "Краткое описание сборки (необязательно)" +msgstr "Краткое описание заказа на производство (необязательно)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" -msgstr "Родительская сборка" +msgstr "Родительский заказ на производство" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" -msgstr "ПорядокСборки, которому выделяется эта сборка" +msgstr "Заказ на производство, которому принадлежит этот заказ на производство" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1049,7 +1054,7 @@ msgstr "ПорядокСборки, которому выделяется эта #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1057,8 +1062,8 @@ msgstr "ПорядокСборки, которому выделяется эта #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1080,146 +1085,146 @@ msgstr "ПорядокСборки, которому выделяется эта #: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 #: templates/js/translated/stock.js:3204 msgid "Part" -msgstr "Детали" +msgstr "Деталь" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" -msgstr "Выберите часть для сборки" +msgstr "Выберите деталь для производства" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" -msgstr "Отсылка на заказ" +msgstr "Ссылка на заказ" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" -msgstr "ЗаказПродаж, которому выделена эта сборка" +msgstr "Заказ на продажу, которому принадлежит этот заказ на производство" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" -msgstr "Расположение источника" +msgstr "Место хранения - источник" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" -msgstr "Выберите местоположение для этой сборки (оставьте пустым, чтобы взять с любого места на складе)" +msgstr "Выберите место хранения для этого заказа на производство (оставьте пустым, чтобы взять с любого места на складе)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" -msgstr "Место назначения" +msgstr "Место хранения результата" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Выберите место хранения завершенных элементов" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" -msgstr "Количество сборки" +msgstr "Количество производимых деталей" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" -msgstr "Количество складских предметов для сборки" +msgstr "Количество складских позиций для производства" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" -msgstr "Завершенные предметы" +msgstr "Произведенные детали" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" -msgstr "Количество предметов на складе, которые были завершены" +msgstr "Количество складских позиций, которые были произведены" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" -msgstr "Статус сборки" +msgstr "Статус заказа на производство" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" -msgstr "Код статуса сборки" +msgstr "Код статуса заказа на производство" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Код партии" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" -msgstr "Код партии для этого вывода сборки" +msgstr "Код партии для продукции" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Дата создания" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Целевая дата завершения" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." -msgstr "Целевая дата для сборки. Сборка будет просрочена после этой даты." +msgstr "Целевая дата для заказа на производства. Заказ будет просрочен после этой даты." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Дата завершения" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "выполнено" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" -msgstr "Выдал/ла" +msgstr "Создано" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" -msgstr "Пользователь, выпустивший этот заказ на сборку" +msgstr "Пользователь, создавший этот заказ на производство" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Ответственный" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" -msgstr "Пользователь, ответственный за сборку этого заказа" +msgstr "Пользователь, ответственный за этот заказ на производство" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Внешняя ссылка" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" -msgstr "Приоритет сборки" +msgstr "Приоритет производства" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" -msgstr "Приоритет этого порядка сборки заказа" +msgstr "Приоритет этого заказа на производство" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1228,52 +1233,52 @@ msgstr "Приоритет этого порядка сборки заказа" msgid "Project Code" msgstr "Код проекта" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" -msgstr "Код проекта для этого заказа сборки" +msgstr "Код проекта для этого заказа на производство" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" -msgstr "Заказ на сборку {build} был завершен" +msgstr "Заказ на производство {build} был завершен" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" -msgstr "Заказ на сборку был завершен" +msgstr "Заказ на производство был завершен" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" -msgstr "Вывод сборки не указан" +msgstr "Продукция не указана" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" -msgstr "Вывод сборки уже завершен" +msgstr "Продукция уже произведена" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" -msgstr "Вывод сборки не совпадает с порядком сборки" +msgstr "Продукция не совпадает с заказом на производство" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "Количество должно быть больше нуля" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" -msgstr "Количество не может быть больше выходного количества" +msgstr "Количество не может быть больше количества продукции" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" -msgstr "Построить объект" +msgstr "Объект производства" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1283,15 +1288,15 @@ msgstr "Построить объект" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1315,41 +1320,41 @@ msgstr "Построить объект" msgid "Quantity" msgstr "Количество" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" -msgstr "Требуемое количество для заказа сборки" +msgstr "Требуемое количество для заказа на производство" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Элемент сборки должен указать вывод сборки, так как основная часть помечена как отслеживаемая" +msgstr "Элемент производства должен указать продукцию, как главную деталь помеченную как отслеживаемая" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "Выделенное количество ({q}) не должно превышать доступное количество на складе ({a})" +msgstr "Резервируемое количество ({q}) не должно превышать доступное количество на складе ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" -msgstr "Предмет на складе перераспределен" +msgstr "Складская позиция перераспределена" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" -msgstr "Выделенное количество должно быть больше нуля" +msgstr "Резервируемое количество должно быть больше нуля" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "Количество должно быть 1 для сериализованных запасов" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" -msgstr "Выбранный товар на складе не соответствует строке BOM" +msgstr "Выбранная складская позиция не соответствует позиции в BOM" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1359,91 +1364,91 @@ msgstr "Выбранный товар на складе не соответст #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 #: templates/js/translated/stock.js:2948 msgid "Stock Item" -msgstr "Предметы на складе" +msgstr "Складская позиция" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" -msgstr "Исходный складской предмет" +msgstr "Исходная складская позиция" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" -msgstr "Количество на складе для построения" +msgstr "Количество на складе для производства" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Установить в" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" -msgstr "Целевой товар на складе" +msgstr "Целевая складская позиция" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" -msgstr "Вывод результата сборки" - -#: build/serializers.py:167 -msgid "Build output does not match the parent build" -msgstr "Результат сборки не совпадает с родительской сборкой" +msgstr "Выход Продукции" #: build/serializers.py:171 -msgid "Output part does not match BuildOrder part" -msgstr "Выходная часть не соответствует части BuildOrder" +msgid "Build output does not match the parent build" +msgstr "Продукция не совпадает с родительским заказом на производство" #: build/serializers.py:175 +msgid "Output part does not match BuildOrder part" +msgstr "Продукция не соответствует детали заказа на производство" + +#: build/serializers.py:179 msgid "This build output has already been completed" -msgstr "Результат этой сборки уже помечен как завершенный" +msgstr "Эта продукция уже помечена как завершенная" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" -msgstr "Этот вывод сборки не полностью выделен" +msgstr "Сырье для этой продукции не полностью зарезервировано" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" -msgstr "Введите количество для вывода сборки" +msgstr "Введите количество продукции" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "Для отслеживаемых деталей должно быть указано целочисленное количество" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Требуется целое количество, так как материал содержит отслеживаемые детали" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Серийные номера" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" -msgstr "Введите серийные номера для результатов сборки" +msgstr "Введите серийные номера для продукции" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "Автоматически выделить серийные номера" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" -msgstr "Автоматически выделять необходимые элементы с соответствующими серийными номерами" +msgstr "Автоматически зарезервировать необходимые элементы с соответствующими серийными номерами" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "Следующие серийные номера уже существуют или недействительны" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" -msgstr "Необходимо представить список результатов сборки" +msgstr "Необходимо представить список выхода деталей" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1456,32 +1461,32 @@ msgstr "Необходимо представить список результ msgid "Location" msgstr "Расположение" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" -msgstr "Расположение на складе для обрытых результатов" +msgstr "Место хранения для списанной продукции" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" -msgstr "Отклонить распределения" +msgstr "Отменить резервирование" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" -msgstr "Отменить любые распределения запасов для отбракованных выходов" +msgstr "Отменить все резервы запасов для списанной продукции" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" -msgstr "Причина ломания вывода(ов) сборки" +msgstr "Причина списания продукции" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" -msgstr "Расположение для завершенных выходов сборки" +msgstr "Место хранения для завершенной продукции" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1491,162 +1496,191 @@ msgstr "Расположение для завершенных выходов с msgid "Status" msgstr "Статус" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" -msgstr "Принять неполное распределение" +msgstr "Разрешить неполное резервирование" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" -msgstr "Выходы, если запасы не были полностью распределены" +msgstr "Завершить продукцию, если запасы не были полностью распределены" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" -msgstr "Удалить выделенный запас" +msgstr "Удалить зарезервированный запас" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" -msgstr "Вычесть запасы, которые уже были выделены для этой сборки" +msgstr "Вычесть запасы, которые уже были зарезервированы для этого производства" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" -msgstr "Удалить неполные выходные данные" +msgstr "Удалить незавершенную продукцию" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" -msgstr "Удалить все результаты сборки, которые не были завершены" +msgstr "Удалить всю незавершенную продукцию" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" -msgstr "Нет разрешения" +msgstr "Запрещено" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" -msgstr "Принять как потребляемые этим порядком сборки" +msgstr "Принять как поглощенный этим заказом на производство" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" -msgstr "Распределить до завершения заказа на сборку" +msgstr "Отменить резерв, до завершения заказа на производство" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "Перераспределенные запасы" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" -msgstr "Как вы хотите обработать дополнительные товары, назначенные для заказа на сборку" +msgstr "Как вы хотите обработать дополнительные складские позиции, назначенные для заказа на производство" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" -msgstr "Некоторые товары на складе перераспределены" +msgstr "Некоторые складские позиции были перераспределены" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" -msgstr "Принять снято" +msgstr "Разрешить не полное резервирование" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" -msgstr "Подтвердите, что товары на складе не были полностью выделены для этого заказа на сборку" +msgstr "Подтвердите, что складские позиции не были полностью зарезервированы для этого заказа на производство" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" -msgstr "Необходимые запасы не были выделены полностью" +msgstr "Необходимые запасы не были полностью зарезервированы" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" -msgstr "Принять незавершенные" +msgstr "Разрешить незавершенные производимые детали" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" -msgstr "Принять, что требуемое количество результатов сборки не было завершено" +msgstr "Допустить, что требуемое кол-во продукции не завершено" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" -msgstr "Обязательное количество сборки не было завершено" +msgstr "Требуемое количество деталей не было произведено" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" -msgstr "Порядок сборки имеет незавершенные результаты" +msgstr "Заказ на производство имеет незавершенную продукцию" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" -msgstr "Строка сборки" +msgstr "Позиция для производства" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" -msgstr "Вывод сборки" +msgstr "Выход продукции" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" -msgstr "Вывод сборки должен указывать на ту же сборку" +msgstr "Продукция должна указывать на тот же производство" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" -msgstr "Сборка Линии Предмет" +msgstr "Позиция для производства" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" -msgstr "bom_item.part должна указывать на ту же часть, что и порядок сборки" +msgstr "bom_item.part должна указывать на ту же часть, что и заказ на производство" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" -msgstr "Компонент должен быть в наличии" +msgstr "Элемент должен быть в наличии" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Превышено доступное количество ({q})" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" -msgstr "Вывод сборки должен быть определен для распределения отслеживаемых частей" +msgstr "Продукция должна быть указан для резервирования отслеживаемых частей" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" -msgstr "Вывод сборки не может быть указан для распределения неотслеживаемых частей" +msgstr "Продукция не может быть указана для резервирования не отслеживаемых частей" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" -msgstr "Необходимо указать пункты распределения" +msgstr "Необходимо указать резервируемые элементы" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" -msgstr "Расположение склада, где будут переданы части (оставьте пустым, чтобы забрать их из любого места)" +msgstr "Место хранения, где будут зарезервированы детали (оставьте пустым, чтобы забрать их из любого места)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" -msgstr "Исключить местоположение" +msgstr "Исключить место хранения" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" -msgstr "Исключить товары на складе из этого выбранного места" +msgstr "Исключить складские позиции из этого выбранного места хранения" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "Обменный остаток" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" -msgstr "Товары на складе в нескольких местах могут использоваться на взаимозаменяемой основе" +msgstr "Складские позиции в нескольких местах могут использоваться на взаимозаменяемой основе" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" -msgstr "Заменить запасы" +msgstr "Заменить остатки" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" -msgstr "Разрешить распределение замещающих частей" +msgstr "Разрешить резервирование замещающих деталей" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "Необязательные элементы" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" -msgstr "Выделить дополнительные BOM предметы для заказа" +msgstr "Зарезервировать необязательные позиции BOM для заказа на производство" + +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "Позиция BOM" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "Зарезервированные Запасы" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "В заказе" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "В производстве" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "Доступный запас" #: build/tasks.py:149 msgid "Stock required for build order" -msgstr "Для заказа сборки необходим остаток" +msgstr "Необходимый запас для заказа на производство" #: build/tasks.py:166 msgid "Overdue Build Order" @@ -1655,7 +1689,7 @@ msgstr "Просроченный заказ сборки" #: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" -msgstr "Заказ на сборку {bo} просрочен" +msgstr "Заказ на производство {bo} просрочен" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" @@ -1717,64 +1751,64 @@ msgstr "Печать" #: build/templates/build/build_base.html:60 msgid "Print build order report" -msgstr "Печать отчета о заказе сборки" +msgstr "Печать отчета о заказе на производство" #: build/templates/build/build_base.html:67 msgid "Build actions" -msgstr "Действия со сборкой" +msgstr "Действия с производством" #: build/templates/build/build_base.html:71 msgid "Edit Build" -msgstr "Редактировать сборку" +msgstr "Редактировать производство" #: build/templates/build/build_base.html:73 msgid "Cancel Build" -msgstr "Отменить сборку" +msgstr "Отменить производство" #: build/templates/build/build_base.html:76 msgid "Duplicate Build" -msgstr "Дублировать сборку" +msgstr "Дублировать производство" #: build/templates/build/build_base.html:79 msgid "Delete Build" -msgstr "Удалить сборку" +msgstr "Удалить производство" #: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 msgid "Complete Build" -msgstr "Завершить сборку" +msgstr "Завершить производство" #: build/templates/build/build_base.html:107 msgid "Build Description" -msgstr "Описание сборки" +msgstr "Описание производства" #: build/templates/build/build_base.html:117 msgid "No build outputs have been created for this build order" -msgstr "Нет результатов сборки для этого заказа сборки" +msgstr "Не указана продукция для этого заказа на производство" #: build/templates/build/build_base.html:124 msgid "Build Order is ready to mark as completed" -msgstr "Заказ на сборку готов к отметке как выполненный" +msgstr "Заказ на производство готов быть отмечен как выполненный" #: build/templates/build/build_base.html:129 msgid "Build Order cannot be completed as outstanding outputs remain" -msgstr "Заказ на сборку не может быть выполнен, так как остались невыполненные результаты" +msgstr "Заказ на производство не может быть выполнен, так как осталась незавершенная продукция" #: build/templates/build/build_base.html:134 msgid "Required build quantity has not yet been completed" -msgstr "Требуемый объем сборки еще не был завершен" +msgstr "Требуемое кол-во не было произведено" #: build/templates/build/build_base.html:139 msgid "Stock has not been fully allocated to this Build Order" -msgstr "" +msgstr "Остатки не были полностью зарезервированы для этого заказа на производство" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1787,7 +1821,7 @@ msgstr "Целевая дата" #: build/templates/build/build_base.html:165 #, python-format msgid "This build was due on %(target)s" -msgstr "" +msgstr "Производство было просрочено на %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 @@ -1804,11 +1838,11 @@ msgstr "Просрочено" #: build/templates/build/build_base.html:177 #: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 msgid "Completed Outputs" -msgstr "Завершенные результаты" +msgstr "Завершенная продукция" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1820,45 +1854,45 @@ msgstr "Завершенные результаты" #: templates/js/translated/sales_order.js:992 #: templates/js/translated/stock.js:2895 msgid "Sales Order" -msgstr "Заказ покупателя" +msgstr "Заказ на продажу" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 #: templates/js/translated/table_filters.js:24 msgid "Issued By" -msgstr "Выдано" +msgstr "Создано" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "Приоритет" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "Удалить заказ на сборку" +msgstr "Удалить заказ на производство" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "Создать QR-код заказа" +msgstr "QR-код заказа на производство" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "Привязать штрих-код для заказа сборки" +msgstr "Привязать штрих-код для заказа на производство" #: build/templates/build/detail.html:15 msgid "Build Details" -msgstr "Подробности сборки" +msgstr "Подробности производства" #: build/templates/build/detail.html:38 msgid "Stock Source" -msgstr "Складской источник" +msgstr "Источник запаса" #: build/templates/build/detail.html:43 msgid "Stock can be taken from any available location." -msgstr "" +msgstr "Остатки не могут быть получены из любого доступного места хранения." -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "Назначение" @@ -1869,11 +1903,11 @@ msgstr "Место назначения не указано" #: build/templates/build/detail.html:73 msgid "Allocated Parts" -msgstr "" +msgstr "Зарезервированные детали" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1887,7 +1921,7 @@ msgstr "Партия" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "Создано" @@ -1903,39 +1937,39 @@ msgstr "Завершённые" #: build/templates/build/detail.html:153 msgid "Build not complete" -msgstr "Сборка не завершена" +msgstr "Производство не завершено" #: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" -msgstr "Порожденные заказы на сборку" +msgstr "Дочерние заказы на производство" #: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" -msgstr "" +msgstr "Зарезервировать остатки для производства" #: build/templates/build/detail.html:181 msgid "Deallocate stock" -msgstr "" +msgstr "Отменить резерв остатков" #: build/templates/build/detail.html:182 msgid "Deallocate Stock" -msgstr "" +msgstr "Отменить Резерв Остатков" #: build/templates/build/detail.html:184 msgid "Automatically allocate stock to build" -msgstr "" +msgstr "Автоматически зарезервировать остатки для производства" #: build/templates/build/detail.html:185 msgid "Auto Allocate" -msgstr "" +msgstr "Автоматически Зарезервировать" #: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" -msgstr "" +msgstr "Вручную зарезервировать остатки для производства" #: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" -msgstr "" +msgstr "Зарезервировать Остатки" #: build/templates/build/detail.html:191 msgid "Order required parts" @@ -1948,23 +1982,23 @@ msgstr "Заказать детали" #: build/templates/build/detail.html:210 msgid "Incomplete Build Outputs" -msgstr "" +msgstr "Незавершенная продукция" #: build/templates/build/detail.html:214 msgid "Create new build output" -msgstr "" +msgstr "Создать выход производства" #: build/templates/build/detail.html:215 msgid "New Build Output" -msgstr "" +msgstr "Новая продукция" #: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" -msgstr "" +msgstr "Поглощенные Остатки" #: build/templates/build/detail.html:244 msgid "Completed Build Outputs" -msgstr "" +msgstr "Завершенная продукция" #: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 #: company/templates/company/detail.html:229 @@ -1980,36 +2014,36 @@ msgstr "" #: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" -msgstr "Приложения" +msgstr "Файлы" #: build/templates/build/detail.html:271 msgid "Build Notes" -msgstr "Заметки сборки" +msgstr "Записи производства" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" -msgstr "" +msgstr "Резервирование Завершено" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" -msgstr "" +msgstr "Все позиции были полностью зарезервированы" #: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" -msgstr "Новый заказ на сборку" +msgstr "Новый заказ на производство" #: build/templates/build/sidebar.html:5 msgid "Build Order Details" -msgstr "" +msgstr "Подробности Заказа на Производство" #: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" -msgstr "Незавершенные выходные данные" +msgstr "Незавершенная продукция" #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" -msgstr "" +msgstr "Неподдерживаемый формат файла: {fmt}" #: common/files.py:65 msgid "Error reading file (invalid encoding)" @@ -2037,1417 +2071,1438 @@ msgstr "Выберите файл для загрузки" #: common/forms.py:25 msgid "{name.title()} File" -msgstr "" +msgstr "Файл {name.title()}" #: common/forms.py:26 #, python-brace-format msgid "Select {name} file to upload" msgstr "Выберите {name} файл для загрузки" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "Обновлено" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" +msgstr "Временная метка последнего обновления" + +#: common/models.py:105 +msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:127 +#: common/models.py:130 msgid "Unique project code" -msgstr "" +msgstr "Уникальный код проекта" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" -msgstr "" +msgstr "Описание проекта" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" -msgstr "" +msgstr "Пользователь или группа, ответственные за этот проект" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" -msgstr "" +msgstr "Ключ настроек (должен быть уникальным - не чувствителен к регистрам)" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" -msgstr "" +msgstr "Значения настроек" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" -msgstr "" +msgstr "Выбранное значение не является допустимым" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" -msgstr "" +msgstr "Значение должно быть булевым" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" -msgstr "" +msgstr "Значение должно быть целым числом" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" -msgstr "" +msgstr "Строка ключа должна быть уникальной" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" -msgstr "" +msgstr "Нет группы" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." -msgstr "" +msgstr "Пустой домен не допускается." -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" -msgstr "" +msgstr "Недопустимое доменное имя: {domain}" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" -msgstr "" +msgstr "Нет плагина" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "Требуется перезапуск" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" -msgstr "" +msgstr "Настройки были изменены, что требует перезапуска сервера" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" -msgstr "" +msgstr "Ожидаемые миграции" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" -msgstr "" +msgstr "Количество ожидаемых миграций базы данных" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" -msgstr "" +msgstr "Название сервера" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" -msgstr "" +msgstr "Текстовое описание сервера" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "Название инстанса" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" -msgstr "" +msgstr "Имя сервера в заголовке" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" -msgstr "" +msgstr "Ограничить отображение `О...`" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" -msgstr "" +msgstr "Показать `О...` только суперпользователям" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Название компании" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "Внутреннее название компании" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "Базовая ссылка" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "Базовая ссылка для экземпляра сервера" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Валюта по умолчанию" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" -msgstr "" +msgstr "Выберите базовую валюту для расчета цены" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" -msgstr "" +msgstr "Как часто обновлять курс валют (установите \"ноль\", чтобы выключить)" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "дней" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" -msgstr "" +msgstr "Плагин обновления валют" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "Скачать по ссылке" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "Разрешить загрузку удаленных изображений и файлов по внешнему URL" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "Ограничение размера загрузки" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "Максимально допустимый размер загрузки для удалённого изображения" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "User-Agent, используемый для загрузки из URL" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "Позволяет переопределить user-Agent, используемый для загрузки изображений и файлов с внешнего URL (оставьте пустым по умолчанию)" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" -msgstr "" +msgstr "Строгая проверка URL-адреса" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" -msgstr "" +msgstr "Требуется спецификация схемы при проверке URL-адресов" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "Требуется подтверждение" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "Требовать явное подтверждение пользователя для определенного действия." -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "Глубина дерева" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "Глубина дерева по умолчанию для просмотра дерева. Глубокие уровни загружены по мере необходимости." -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "Интервал проверки обновлений" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "Как часто проверять наличие обновлений (установите ноль чтобы выключить)" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "Автоматическое резервное копирование" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "Включить автоматическое резервное копирование базы данных и медиа-файлов" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" -msgstr "Интервал автосохранения" +msgstr "Интервал резервного копирования" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "Укажите количество дней между событиями автоматического резервного копирования" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "Интервал удаления задачи" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "Результаты фоновых задач будут удалены после указанного количества дней" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "Интервал удаления журнала ошибок" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "Журналы ошибок будут удалены после указанного количества дней" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "Интервал удаления уведомления" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "Уведомления пользователя будут удалены после указанного количества дней" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Поддержка штрих-кодов" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" -msgstr "" +msgstr "Включить поддержку сканера штрих-кодов в веб-интерфейсе" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "Задержка сканирования штрих-кода" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "Время задержки обработки штрих-кода" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "Поддержка веб-камер штрих-кодов" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "Разрешить сканирование штрих-кода через веб-камеру в браузере" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" -msgstr "Ревизия деталей" +msgstr "Ревизия детали" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" -msgstr "" +msgstr "Шаблон регулярного выражения для сопоставления IPN детали" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "Разрешить повторяющиеся IPN" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "Разрешить редактирование IPN" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" -msgstr "" +msgstr "Разрешить изменение значения IPN при редактировании детали" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" -msgstr "" +msgstr "Скопировать данные BOM детали" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" -msgstr "" +msgstr "Копировать данные BOM по умолчанию при дублировании детали" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" -msgstr "" +msgstr "Скопировать данные параметров детали" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" -msgstr "" +msgstr "Копировать данных параметров по умолчанию при дублировании детали" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" -msgstr "" +msgstr "Скопировать данные тестирования детали" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" -msgstr "" +msgstr "Копировать данные тестирования по умолчанию при дублировании детали" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" -msgstr "" +msgstr "Скопировать параметры по шаблону категории" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" -msgstr "" +msgstr "Копировать параметры по шаблону категории при создании детали" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Шаблон" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "По умолчанию детали являются шаблонами" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" -msgstr "Сборка" +msgstr "Производимая деталь" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" -msgstr "" +msgstr "По умолчанию детали могут быть собраны из других компонентов" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Компонент" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" -msgstr "" +msgstr "По умолчанию детали могут использоваться в качестве суб-компонентов" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Можно купить" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "По умолчанию детали являются отслеживаемыми" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Можно продавать" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" -msgstr "" +msgstr "Детали продаются по умолчанию" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Отслеживание" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "По умолчанию детали являются отслеживаемыми" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Виртуальная" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" -msgstr "" +msgstr "Детали являются виртуальными по умолчанию" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "Показывать связанные детали" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Исходные данные о поставщике" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" -msgstr "" +msgstr "Использовать цены из складских позиций" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Использовать расценки из ручного ввода данных о запасах для расчета цен" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" -msgstr "" +msgstr "Возраст цен складских позиций" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" -msgstr "" +msgstr "Исключить складские позиции старше указанного количества дней с расчёта цен" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" -msgstr "" +msgstr "Только Активные Варианты" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" -msgstr "" +msgstr "Интервал пересчета цен" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" -msgstr "" +msgstr "Внутренние цены" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" -msgstr "" +msgstr "Включить отчеты" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "Режим отладки" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" -msgstr "" +msgstr "Размер страницы" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" -msgstr "" +msgstr "При печати отчета о тестировании приложить копию тестового отчета к соответствующему складской позиции" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" -msgstr "" +msgstr "Серийные номера для складских позиций должны быть уникальными глобально" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" -msgstr "" +msgstr "Определяет поведение по умолчанию, когда складская позиция заканчивается" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" -msgstr "" +msgstr "Шаблон для создания кодов партии по умолчанию для складских позиций" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" -msgstr "" +msgstr "Срок годности Запасов" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" -msgstr "" +msgstr "Время Залежалости Запасов" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" -msgstr "" +msgstr "Количество дней перед тем как складская единица будет считаться просроченной" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" -msgstr "" +msgstr "Использовать просроченные остатки в производстве" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" -msgstr "" +msgstr "Разрешить использовать просроченные остатки в производстве" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" -msgstr "" +msgstr "Показать установленные складские позиции" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" -msgstr "" +msgstr "Отображать установленные складские позиции в складских таблицах" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" -msgstr "" +msgstr "Паттерн ссылки заказа на производство" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" -msgstr "" +msgstr "Поле требуемого паттерна для создания ссылки заказа на производство" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" -msgstr "Включить возврат заказов" +msgstr "Включить заказы на возврат" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "Редактировать завершенные заказы на покупку" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" -msgstr "" +msgstr "Включить SSO" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "Необходимо указать EMail" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" -msgstr "" +msgstr "Написать дважды" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" -msgstr "" +msgstr "Пароль дважды" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" -msgstr "" +msgstr "Разрешенные домены" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" -msgstr "" +msgstr "Принудительное MFA" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "Пользователи должны использовать многофакторную безопасность." -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "Проверять плагины при запуске" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" -msgstr "" +msgstr "Исключить складские позиции во внешних местах хранения из инвентаризации" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "Показывать детали, на которые включены уведомления" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "Показывать детали, на которые включены уведомления, на главной странице" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "Показывать категории, на которые включены уведомления" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "Показывать категории, на которые включены уведомления, на главной странице" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "Показывать последние детали" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "Показывать последние детали на главной странице" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "Показывать непроверенные BOMы" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "Показывать BOMы, ожидающие проверки, на главной странице" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "Показывать изменившиеся складские запасы" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" -msgstr "Показывать единицы хранения с недавно изменившимися складскими запасами на главной странице" +msgstr "Показывать складские позиции с недавно изменившимися запасами на главной странице" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "Показывать низкие складские запасы" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" -msgstr "Показывать единицы хранения с низкими складскими запасами на главной странице" +msgstr "Показывать складские позиции с низкими запасами на главной странице" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" -msgstr "Показывать закончившиеся детали" +msgstr "Показывать закончившиеся складские позиции" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" -msgstr "Показывать закончившиеся на складе единицы хранения на главной странице" +msgstr "Показывать закончившиеся складские позиции на главной странице" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" -msgstr "Показывать требуемые детали" +msgstr "Показывать требуемые складские позиции" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" -msgstr "Показывать требуемые для сборки единицы хранения на главной странице" +msgstr "Показывать требуемые для производства складские позиции на главной странице" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" -msgstr "Показывать просрочку" +msgstr "Показывать складские позиции с истекшим сроком годности" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" -msgstr "Показывать единицы хранения с истёкшим сроком годности на главной странице" +msgstr "Показывать складские позиции с истёкшим сроком годности на главной странице" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" -msgstr "Показывать залежалые" +msgstr "Показывать залежалые складские позиции" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" -msgstr "Показывать залежалые единицы хранения на главной странице" +msgstr "Показывать складские позиции с истекающим сроком годности на главной странице" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" -msgstr "Показывать незавершённые сборки" +msgstr "Показывать незавершённые производства" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" -msgstr "Показывать незавершённые сборки на главной странице" +msgstr "Показывать незавершённые производства на главной странице" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" -msgstr "Показывать просроченные сборки" +msgstr "Показывать просроченные производства" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" -msgstr "Показывать просроченные сборки на главной странице" +msgstr "Показывать просроченные производства на главной странице" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" -msgstr "" +msgstr "Показать просроченные заказы на производство" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" -msgstr "" +msgstr "Показать просроченные заказы на продажу" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" -msgstr "" +msgstr "Показывать новости" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" -msgstr "" +msgstr "Поиск Деталей" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" -msgstr "" +msgstr "Поиск Запасов" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" -msgstr "" +msgstr "Отображать складские позиции в окне предварительного просмотра поиска" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" -msgstr "" +msgstr "Скрыть недоступные складские позиции" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" -msgstr "" +msgstr "Исключить недоступные складские позиции из окна предварительного просмотра поиска" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" -msgstr "" +msgstr "Поиск мест хранения" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" -msgstr "" +msgstr "Поиск компаний" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" -msgstr "Искать заказы на сборку" +msgstr "Поиск заказов на производство" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" -msgstr "Отображать заказы на сборку в окне предварительного просмотра поиска" +msgstr "Отображать заказы на производство в окне предварительного просмотра поиска" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "Поиск заказов на продажу" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" -msgstr "Поиск возвращенных заказов" +msgstr "Поиск заказов на возврат" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" -msgstr "" +msgstr "Поиск по Regex" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" -msgstr "" +msgstr "Фиксированная панель навигации" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" -msgstr "" +msgstr "Формат даты" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Планирование деталей" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" -msgstr "Запасы деталей" +msgstr "Инвентаризация детали" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" -msgstr "" +msgstr "Шаблон складской позиции по умолчанию" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" -msgstr "" +msgstr "Шаблон метки складской позиции для автоматического выбора" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Цена" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" -msgstr "" +msgstr "Конечная точка" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3455,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "Активный" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" -msgstr "" +msgstr "Токен" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" -msgstr "" +msgstr "Токен для доступа" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" -msgstr "" +msgstr "Секрет" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" -msgstr "" +msgstr "ID Сообщения" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" -msgstr "" +msgstr "Хост" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" -msgstr "" +msgstr "Заголовок" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" -msgstr "" +msgstr "Тело" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" -msgstr "" +msgstr "Работал над" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" -msgstr "" +msgstr "Код" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" -msgstr "" +msgstr "Заголовок" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" -msgstr "" +msgstr "Опубликовано" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" -msgstr "" +msgstr "Автор" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" -msgstr "" +msgstr "Итого" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" -msgstr "" +msgstr "Читать" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3559,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "Изображение" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" -msgstr "" +msgstr "Файл изображения" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" -msgstr "" +msgstr "Название единицы" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" -msgstr "" +msgstr "Символ" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" -msgstr "" +msgstr "Определение" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3607,7 +3662,7 @@ msgstr "" #: common/notifications.py:330 common/notifications.py:337 msgid "Items Received" -msgstr "" +msgstr "Полученные элементы" #: common/notifications.py:332 msgid "Items have been received against a purchase order" @@ -3621,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "Запущен" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "Ожидающие задачи" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "Запланированные задания" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "Невыполненные Задачи" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "Код задачи" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "Уникальный ID задачи" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "Заблокировать" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "Время блокировки" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "Название задачи" + +#: common/serializers.py:372 +msgid "Function" +msgstr "Функция" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "Имя функции" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "Аргументы" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "Аргументы задачи" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3638,7 +3753,7 @@ msgstr "Поля Соответствия" #: common/views.py:84 msgid "Match Items" -msgstr "" +msgstr "Совпадающие элементы" #: common/views.py:401 msgid "Fields matching failed" @@ -3659,184 +3774,184 @@ msgstr "Детали импортированы" msgid "Previous Step" msgstr "Предыдущий шаг" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "Описание компании" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "Описание компании" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "Сайт" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "Сайт компании" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Телефон" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "Контактный телефон" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "Контактный EMail" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Контакт" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "Контактное лицо" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "Ссылка на описание компании" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "покупатель" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "Вы продаёте детали этой компании?" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "поставщик" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "Вы закупаете детали у этой компании?" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "производитель" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "Является ли компания производителем деталей?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "Для этой компании используется валюта по умолчанию" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Компания" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "Выберите компанию" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" -msgstr "" +msgstr "Заголовок адреса" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" -msgstr "" +msgstr "Строка 1" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" -msgstr "" +msgstr "Адресная строка 1" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" -msgstr "" +msgstr "Строка 2" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" -msgstr "" +msgstr "Адресная строка 2" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" -msgstr "" +msgstr "Почтовый индекс" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" -msgstr "" +msgstr "Город/Регион" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" -msgstr "" +msgstr "Регион/Область" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" -msgstr "" +msgstr "Страна" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" -msgstr "" +msgstr "Страна адреса" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" -msgstr "" +msgstr "Записи отправления" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" -msgstr "" +msgstr "Записи для курьера" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" -msgstr "" +msgstr "Внутренние записи отправления" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" -msgstr "" +msgstr "Записи отправления для внутреннего пользования" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Базовая деталь" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "Выберите деталь" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3848,11 +3963,11 @@ msgstr "Выберите деталь" msgid "Manufacturer" msgstr "Производитель" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Выберите производителя" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3863,67 +3978,67 @@ msgstr "Выберите производителя" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "Код производителя" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "Ссылка на сайт производителя" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Деталь производителя" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "Наименование параметра" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Значение" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "Значение параметра" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "Ед.изм" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" -msgstr "Единицы измерения" +msgstr "Единицы измерения параметра" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3938,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "Поставщик" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Выберите поставщика" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "Код поставщика" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "Выберите производителя части" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "Ссылка на сайт поставщика" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" -msgstr "Заметка" +msgstr "Запись" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "базовая стоимость" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Упаковка" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" -msgstr "" +msgstr "Упаковка детали" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3997,35 +4112,35 @@ msgstr "" #: templates/js/translated/purchase_order.js:2081 #: templates/js/translated/purchase_order.js:2098 msgid "Pack Quantity" -msgstr "" +msgstr "Кол-во в упаковке" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" -msgstr "" +msgstr "множественные" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" -msgstr "" +msgstr "Кратность заказа" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" #: company/serializers.py:153 msgid "Default currency used for this supplier" -msgstr "Для этого поставщика используется валюта по умолчанию" +msgstr "Валюта по умолчанию для этого поставщика" #: company/templates/company/company_base.html:21 #: templates/js/translated/purchase_order.js:242 @@ -4064,7 +4179,7 @@ msgstr "Удалить компанию" #: report/templates/report/inventree_test_report_base.html:84 #: report/templates/report/inventree_test_report_base.html:163 msgid "Part image" -msgstr "" +msgstr "Изображение детали" #: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 @@ -4079,12 +4194,12 @@ msgstr "Скачать изображение по ссылке" #: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" -msgstr "" +msgstr "Удалить изображение" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4099,7 +4214,7 @@ msgstr "Покупатель" msgid "Uses default currency" msgstr "Использовать валюту по умолчанию" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4113,7 +4228,7 @@ msgstr "Телефон" #: company/templates/company/company_base.html:205 #: part/templates/part/part_base.html:528 msgid "Remove Image" -msgstr "" +msgstr "Удалить Изображение" #: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" @@ -4124,12 +4239,12 @@ msgstr "" #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" -msgstr "" +msgstr "Удалить" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "Загрузить изображение" +msgstr "Загрузить Изображение" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 @@ -4140,7 +4255,7 @@ msgstr "Скачать изображение" #: company/templates/company/manufacturer_part_sidebar.html:7 #: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" -msgstr "Детали поставщиков" +msgstr "Детали поставщика" #: company/templates/company/detail.html:19 msgid "Create new supplier part" @@ -4155,7 +4270,7 @@ msgstr "Новая деталь поставщика" #: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 #: templates/js/translated/search.js:151 msgid "Manufacturer Parts" -msgstr "Детали производителей" +msgstr "Детали производителя" #: company/templates/company/detail.html:45 msgid "Create new manufacturer part" @@ -4218,7 +4333,7 @@ msgstr "Новый заказ на продажу" #: company/templates/company/detail.html:126 msgid "Assigned Stock" -msgstr "" +msgstr "Назначенный Запас" #: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 @@ -4229,7 +4344,7 @@ msgstr "" #: templates/js/translated/search.js:232 templates/navbar.html:65 #: users/models.py:197 msgid "Return Orders" -msgstr "" +msgstr "Заказы на возврат" #: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 @@ -4239,20 +4354,20 @@ msgstr "" #: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" -msgstr "" +msgstr "Новый Заказ на Возврат" #: company/templates/company/detail.html:168 msgid "Company Notes" -msgstr "Заметки о компании" +msgstr "Записи о компании" #: company/templates/company/detail.html:183 msgid "Company Contacts" -msgstr "" +msgstr "Контакты компании" #: company/templates/company/detail.html:187 #: company/templates/company/detail.html:188 msgid "Add Contact" -msgstr "" +msgstr "Добавить контакт" #: company/templates/company/detail.html:206 msgid "Company addresses" @@ -4261,7 +4376,7 @@ msgstr "" #: company/templates/company/detail.html:210 #: company/templates/company/detail.html:211 msgid "Add Address" -msgstr "" +msgstr "Добавить адрес" #: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 @@ -4272,7 +4387,7 @@ msgstr "Производители" #: company/templates/company/supplier_part.html:227 #: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" -msgstr "" +msgstr "Заказать деталь" #: company/templates/company/manufacturer_part.html:39 #: templates/js/translated/company.js:1333 @@ -4287,7 +4402,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:65 #: company/templates/company/supplier_part.html:97 msgid "Internal Part" -msgstr "" +msgstr "Внутренняя деталь" #: company/templates/company/manufacturer_part.html:95 msgid "No manufacturer information available" @@ -4329,22 +4444,22 @@ msgstr "Поставленные детали" #: company/templates/company/sidebar.html:16 msgid "Supplied Stock Items" -msgstr "" +msgstr "Поставленные складские позиции" #: company/templates/company/sidebar.html:25 msgid "Assigned Stock Items" -msgstr "" +msgstr "Назначенные складские позиции" #: company/templates/company/sidebar.html:33 msgid "Contacts" -msgstr "" +msgstr "Контакты" #: company/templates/company/sidebar.html:35 msgid "Addresses" -msgstr "" +msgstr "Адреса" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4362,7 +4477,7 @@ msgstr "" #: company/templates/company/supplier_part.html:228 #: part/templates/part/detail.html:110 msgid "Order Part" -msgstr "" +msgstr "Заказать Деталь" #: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 @@ -4409,13 +4524,13 @@ msgstr "" #: company/templates/company/supplier_part.html:209 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" -msgstr "Создать единицу хранения" +msgstr "Создать новую складскую позицию" #: company/templates/company/supplier_part.html:210 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 #: templates/js/translated/stock.js:537 msgid "New Stock Item" -msgstr "Новая единица хранения" +msgstr "Новая складская позиция" #: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" @@ -4429,7 +4544,7 @@ msgstr "Информация о цене" #: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" -msgstr "" +msgstr "Добавить разрыв цен" #: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" @@ -4446,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4454,7 +4569,7 @@ msgstr "" #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 #: users/models.py:193 msgid "Stock Items" -msgstr "Детали на складе" +msgstr "Складские позиции" #: company/templates/company/supplier_part_sidebar.html:9 msgid "Supplier Part Pricing" @@ -4485,9 +4600,13 @@ msgstr "Компании" msgid "New Company" msgstr "Новая компания" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" -msgstr "" +msgstr "Имя метки" #: label/models.py:123 msgid "Label description" @@ -4495,15 +4614,15 @@ msgstr "" #: label/models.py:131 msgid "Label" -msgstr "" +msgstr "Метка" #: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" -msgstr "" +msgstr "Включено" #: label/models.py:139 msgid "Label template is enabled" @@ -4525,9 +4644,9 @@ msgstr "Высота [мм]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" -msgstr "" +msgstr "Шаблон имени файла" #: label/models.py:159 msgid "Pattern for generating label filenames" @@ -4539,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "Фильтры" @@ -4549,15 +4668,116 @@ msgstr "Фильтры" #: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 msgid "QR Code" -msgstr "" +msgstr "QR Код" #: label/templates/label/part/part_label_code128.html:31 #: label/templates/label/stocklocation/qr_and_text.html:31 #: templates/qr_code.html:7 msgid "QR code" +msgstr "QR код" + +#: machine/machine_types/label_printer.py:213 +msgid "Copies" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "Неизвестно" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4570,7 +4790,7 @@ msgstr "Общая стоимость" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4584,201 +4804,197 @@ msgstr "" msgid "Purchase Order" msgstr "Заказ на закупку" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 #: templates/js/translated/stock.js:2912 msgid "Return Order" -msgstr "" +msgstr "Заказ на возврат" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" -msgstr "" +msgstr "Валюта Заказа" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "Контакт не соответствует выбранной компании" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "Описание заказа (дополнительно)" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "Выберите код проекта для этого заказа" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" -msgstr "" +msgstr "Создал" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "Пользователь или группа, ответственная за этот заказ" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" -msgstr "" +msgstr "Ссылка на заказ" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "Компания, в которой детали заказываются" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" -msgstr "" +msgstr "получил" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" -msgstr "" +msgstr "Дата создания" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "Компания, которой детали продаются" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" -msgstr "" +msgstr "Дата отгрузки" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" -msgstr "" +msgstr "Отправлено" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" -msgstr "" +msgstr "Количество" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" -msgstr "" +msgstr "Записи о позиции" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" -msgstr "Описание товара (необязательно)" +msgstr "Описание позиции (необязательно)" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "Контекст" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "Дополнительный контекст для этой строки" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" -msgstr "" +msgstr "Цена за единицу" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" -msgstr "" +msgstr "удалено" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" -msgstr "" +msgstr "Заказ" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" -msgstr "" +msgstr "Деталь поставщика" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4786,333 +5002,333 @@ msgstr "" #: templates/js/translated/table_filters.js:120 #: templates/js/translated/table_filters.js:598 msgid "Received" -msgstr "" +msgstr "Получено" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Закупочная цена" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Цена продажи" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" -msgstr "" +msgstr "Цена последней продажи" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" -msgstr "" +msgstr "Отгруженное кол-во" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" -msgstr "" +msgstr "Дата отправления" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" -msgstr "" +msgstr "Дата доставки" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" -msgstr "" +msgstr "Проверн" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" -msgstr "" +msgstr "Отправление" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" -msgstr "" +msgstr "Номер отправления" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" -msgstr "" +msgstr "Номер отслеживания" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "Информация об отслеживании доставки" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" -msgstr "" +msgstr "Номер счета" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" -msgstr "" +msgstr "Отправка не имеет зарезервированных складских позиций" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" -msgstr "" +msgstr "Складская позиция не была назначена" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" -msgstr "" +msgstr "Невозможно зарезервировать складскую позицию в позицию другой детали" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" -msgstr "" +msgstr "Количество должно быть 1 для сериализированных складских позиций" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" -msgstr "" +msgstr "Строка" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" -msgstr "" +msgstr "Элемент" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" -msgstr "" +msgstr "Выберите складскую позицию для резервирования" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" -msgstr "Укажите количество на складе" +msgstr "Укажите резервируемое количество" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" -msgstr "Выберите товар возврата от клиента" +msgstr "Выберите позицию, возвращаемую от клиента" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" -msgstr "" +msgstr "Дата получения" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" -msgstr "" +msgstr "Результат" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" -msgstr "" +msgstr "Заказ не открыт" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" -msgstr "Курс покупки валюты" +msgstr "Валюта цены закупки" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" -msgstr "" +msgstr "Позиция" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" -msgstr "Выберите место назначения для полученных товаров" +msgstr "Выберите место назначения для полученных элементов" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" -msgstr "Введите код партии для поступающих единиц хранения" +msgstr "Введите код партии для поступающих складских позиций" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" -msgstr "Введите серийные номера для входящих товаров на складе" +msgstr "Введите серийные номера для входящих складских позиций" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" -msgstr "" +msgstr "Штрих-код" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" -msgstr "" +msgstr "Сканированный штрих-код" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "Для отслеживаемых деталей должно быть указано целочисленное количество" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" -msgstr "Курс продажи валюты" +msgstr "Валюта цены продажи" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" -msgstr "Введите серийные номера для выделения" +msgstr "Введите серийные номера для резервирования" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" #: order/tasks.py:25 msgid "Overdue Purchase Order" -msgstr "" +msgstr "Просроченные заказы на закупку" #: order/tasks.py:30 #, python-brace-format @@ -5121,7 +5337,7 @@ msgstr "" #: order/tasks.py:75 msgid "Overdue Sales Order" -msgstr "" +msgstr "Просроченные заказы на продажу" #: order/tasks.py:80 #, python-brace-format @@ -5148,7 +5364,7 @@ msgstr "Действия с заказом" #: order/templates/order/return_order_base.html:76 #: order/templates/order/sales_order_base.html:75 msgid "Edit order" -msgstr "" +msgstr "Редактировать заказ" #: order/templates/order/order_base.html:68 #: order/templates/order/return_order_base.html:78 @@ -5158,7 +5374,7 @@ msgstr "Отменить заказ" #: order/templates/order/order_base.html:73 msgid "Duplicate order" -msgstr "" +msgstr "Дублировать заказ" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 @@ -5167,7 +5383,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 msgid "Issue Order" -msgstr "" +msgstr "Оформить Заказа" #: order/templates/order/order_base.html:83 #: order/templates/order/return_order_base.html:86 @@ -5178,7 +5394,7 @@ msgstr "" #: order/templates/order/return_order_base.html:87 #: order/templates/order/sales_order_base.html:93 msgid "Complete Order" -msgstr "" +msgstr "Завершить заказ" #: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" @@ -5188,7 +5404,7 @@ msgstr "" #: order/templates/order/return_order_base.html:101 #: order/templates/order/sales_order_base.html:106 msgid "Order Reference" -msgstr "" +msgstr "Ссылка на заказ" #: order/templates/order/order_base.html:111 #: order/templates/order/return_order_base.html:106 @@ -5200,7 +5416,7 @@ msgstr "Описание заказа" #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:118 msgid "Order Status" -msgstr "" +msgstr "Статсу заказа" #: order/templates/order/order_base.html:141 msgid "No suppplier information available" @@ -5209,23 +5425,23 @@ msgstr "" #: order/templates/order/order_base.html:154 #: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" -msgstr "" +msgstr "Завершенные позиции" #: order/templates/order/order_base.html:160 #: order/templates/order/sales_order_base.html:163 #: order/templates/order/sales_order_base.html:173 msgid "Incomplete" -msgstr "" +msgstr "Не завершен" #: order/templates/order/order_base.html:179 #: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" -msgstr "" +msgstr "Создан" #: order/templates/order/order_base.html:224 msgid "Total cost" -msgstr "" +msgstr "Общая стоимость" #: order/templates/order/order_base.html:228 #: order/templates/order/return_order_base.html:199 @@ -5253,7 +5469,7 @@ msgstr "Отсутствует выбор для следующих обязат #: part/templates/part/import_wizard/match_fields.html:20 #: templates/patterns/wizard/match_fields.html:19 msgid "Duplicate selections found, see below. Fix them then retry submitting." -msgstr "Найдены дубликаты выделений, смотрите ниже. Исправьте их и попробуйте повторить отправку." +msgstr "Найдены дубликаты выбранного, смотрите ниже. Исправьте их и попробуйте повторить отправку." #: order/templates/order/order_wizard/match_fields.html:29 #: order/templates/order/order_wizard/match_parts.html:21 @@ -5268,14 +5484,14 @@ msgstr "Отправить выбранные" #: part/templates/part/import_wizard/match_fields.html:35 #: templates/patterns/wizard/match_fields.html:34 msgid "File Fields" -msgstr "" +msgstr "Поля файлов" #: order/templates/order/order_wizard/match_fields.html:42 #: part/templates/part/import_wizard/ajax_match_fields.html:35 #: part/templates/part/import_wizard/match_fields.html:42 #: templates/patterns/wizard/match_fields.html:41 msgid "Remove column" -msgstr "" +msgstr "Удалить столбец" #: order/templates/order/order_wizard/match_fields.html:60 #: part/templates/part/import_wizard/ajax_match_fields.html:53 @@ -5290,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5344,15 +5560,15 @@ msgstr "Шаг %(step)s из %(count)s" #: report/templates/report/inventree_return_order_report_base.html:19 #: report/templates/report/inventree_so_report_base.html:22 msgid "Line Items" -msgstr "" +msgstr "Позиции" #: order/templates/order/po_sidebar.html:7 msgid "Received Stock" -msgstr "" +msgstr "Полученные Запасы" #: order/templates/order/purchase_order_detail.html:18 msgid "Purchase Order Items" -msgstr "" +msgstr "Позиции заказа на закупку" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 @@ -5361,7 +5577,7 @@ msgstr "" #: templates/js/translated/return_order.js:459 #: templates/js/translated/sales_order.js:237 msgid "Add Line Item" -msgstr "" +msgstr "Добавить позицию" #: order/templates/order/purchase_order_detail.html:31 #: order/templates/order/purchase_order_detail.html:32 @@ -5374,23 +5590,23 @@ msgstr "" #: order/templates/order/return_order_detail.html:45 #: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" -msgstr "" +msgstr "Дополнительные позиции" #: order/templates/order/purchase_order_detail.html:56 #: order/templates/order/return_order_detail.html:51 #: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" -msgstr "" +msgstr "Добавить Дополнительную Строку" #: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" -msgstr "" +msgstr "Полученные Запасы" #: order/templates/order/purchase_order_detail.html:99 #: order/templates/order/return_order_detail.html:85 #: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" -msgstr "" +msgstr "Записи Заказа" #: order/templates/order/return_order_base.html:18 #: order/templates/order/sales_order_base.html:18 @@ -5424,7 +5640,7 @@ msgstr "" #: templates/js/translated/return_order.js:381 #: templates/js/translated/sales_order.js:855 msgid "Total Cost" -msgstr "" +msgstr "Общая Стоимость" #: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" @@ -5436,7 +5652,7 @@ msgstr "" #: order/templates/order/return_order_sidebar.html:5 msgid "Order Details" -msgstr "" +msgstr "Сведения о заказе" #: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" @@ -5445,7 +5661,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 msgid "Ship Items" -msgstr "" +msgstr "Отправить" #: order/templates/order/sales_order_base.html:92 #: templates/js/translated/sales_order.js:484 @@ -5472,12 +5688,12 @@ msgstr "" #: order/templates/order/sales_order_detail.html:18 msgid "Sales Order Items" -msgstr "" +msgstr "Позиции заказа на закупку" #: order/templates/order/sales_order_detail.html:67 #: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" -msgstr "" +msgstr "Ожидающие отправления" #: order/templates/order/sales_order_detail.html:71 #: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 @@ -5486,7 +5702,7 @@ msgstr "Действия" #: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" -msgstr "" +msgstr "Новое Отправление" #: order/views.py:120 msgid "Match Supplier Parts" @@ -5510,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" -msgstr "Артикул" +msgstr "Код детали" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "Наименование детали" @@ -5524,27 +5740,27 @@ msgstr "Наименование детали" msgid "Part Description" msgstr "Описание детали" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" -msgstr "Версия" +msgstr "Ревизия" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Ключевые слова" #: part/admin.py:60 msgid "Part Image" -msgstr "" +msgstr "Изображение Детали" #: part/admin.py:63 part/admin.py:300 part/stocktake.py:221 msgid "Category ID" @@ -5562,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Разновидность" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Минимальный запас" @@ -5576,46 +5792,39 @@ msgstr "Минимальный запас" msgid "In Stock" msgstr "На складе" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "В заказе" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "Используется в" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" -msgstr "" +msgstr "Производится" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" -msgstr "" +msgstr "Минимальная Стоимость" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" -msgstr "" +msgstr "Максимальная Стоимость" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" -msgstr "" +msgstr "ID родителя" #: part/admin.py:310 part/admin.py:399 stock/admin.py:62 msgid "Parent Name" -msgstr "" +msgstr "Имя родителя" #: part/admin.py:318 part/templates/part/category.html:88 #: part/templates/part/category.html:101 msgid "Category Path" msgstr "Путь к категории" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5628,443 +5837,438 @@ msgstr "Детали" #: part/admin.py:383 msgid "BOM Level" -msgstr "" +msgstr "Уровень BOM" #: part/admin.py:386 msgid "BOM Item ID" -msgstr "" +msgstr "ID Элемента BOM" #: part/admin.py:396 msgid "Parent IPN" -msgstr "" +msgstr "Родительский IPN" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" -msgstr "IPN" +msgstr "IPN детали" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" -msgstr "" +msgstr "Минимальная цена" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" -msgstr "" +msgstr "Максимальная цена" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" -msgstr "" +msgstr "Остатки произведенные заказом на производство" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" -msgstr "" +msgstr "Остатки требуемые для заказов на производство" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" -msgstr "" +msgstr "Корректный" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "Необходимо выбрать эту опцию" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Место хранения по умолчанию" #: part/bom.py:171 templates/email/low_stock_notification.html:16 msgid "Total Stock" -msgstr "" - -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "Доступный запас" +msgstr "Общий запас" #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Категория детали" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "Категория детали" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "Место хранения по умолчанию для деталей этой категории" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Структура" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Детали не могут быть непосредственно отнесены к структурной категории, но могут быть отнесены к дочерним категориям." -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "Ключевые слова по умолчанию" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "Ключевые слова по умолчанию для деталей этой категории" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Иконка" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "Иконка (необязательно)" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" -msgstr "" +msgstr "Складская позиция с этим серийным номером уже существует" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "Наименование детали" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "Шаблон" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" -msgstr "Эта деталь является шаблоном для других деталей?" +msgstr "Эта деталь является шаблоном?" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "Эта деталь является разновидностью другой детали?" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "Описание детали (необязательно)" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "Ключевые слова для улучшения видимости в результатах поиска" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "Категория" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "Категория" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "Внутренний код детали" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" -msgstr "Версия детали" +msgstr "Ревизия или серийный номер детали" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "Где обычно хранится эта деталь?" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" -msgstr "" +msgstr "Поставщик по умолчанию" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "Срок действия по умолчанию" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" -msgstr "Срок годности (в днях) для товаров на складе этой позиции" +msgstr "Срок годности (в днях) для складских позиций этой детали" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "Минимально допустимый складской запас" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "Единицы измерения этой детали" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "Может ли эта деталь быть создана из других деталей?" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "Может ли эта деталь использоваться для создания других деталей?" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "Является ли каждый экземпляр этой детали уникальным, обладающим серийным номером?" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "Может ли эта деталь быть закуплена у внешних поставщиков?" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "Может ли эта деталь быть продана покупателям?" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" -msgstr "Эта деталь актуальна?" +msgstr "Эта деталь активна?" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "Эта деталь виртуальная, как программный продукт или лицензия?" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" -msgstr "" +msgstr "Контрольная сумма BOM" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" -msgstr "" +msgstr "BOM проверил" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" -msgstr "" +msgstr "Дата проверки BOM" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" -msgstr "" +msgstr "Создатель" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" -msgstr "" +msgstr "Последняя инвентаризация" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" -msgstr "" +msgstr "Продать несколько" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" -msgstr "" +msgstr "Минимальная Стоимость BOM" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" -msgstr "" +msgstr "Максимальная Стоимость BOM" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" -msgstr "" +msgstr "Количество Элементов" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6074,330 +6278,326 @@ msgstr "" #: templates/js/translated/purchase_order.js:1728 #: templates/js/translated/stock.js:2792 msgid "Date" -msgstr "" +msgstr "Дата" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" -msgstr "" +msgstr "Дополнительные Записи" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" -msgstr "" +msgstr "Отчет" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" -msgstr "" +msgstr "Количество Деталей" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" -msgstr "Тестовые шаблоны могут быть созданы только для отслеживаемых деталей" +msgstr "Шаблоны тестирования могут быть созданы только для отслеживаемых деталей" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "Название теста" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "Введите имя для теста" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" -msgstr "" +msgstr "Описание теста" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "Введите описание для этого теста" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" -msgstr "" +msgstr "Требуется" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" -msgstr "" +msgstr "Требуется значение" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" -msgstr "" +msgstr "Название параметра" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" -msgstr "" +msgstr "Чекбокс" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" -msgstr "" +msgstr "Варианты" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "Родительская деталь" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Шаблон параметра" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" -msgstr "" +msgstr "Данные" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" -msgstr "" +msgstr "Значение Параметра" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" -msgstr "" +msgstr "Значение по умолчанию" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" -msgstr "Артикул или наименование детали" +msgstr "Код или наименование детали" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "Значение IPN" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" -msgstr "" +msgstr "Уровень" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" -msgstr "" +msgstr "Уровень BOM" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "BOM Компонент" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "Выберите родительскую деталь" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" -msgstr "" +msgstr "Суб-деталь" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "Выбрать деталь для использования в BOM" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" -msgstr "Эта позиция - расходник. (она не отслеживается в заказах на сборку)" +msgstr "Эта позиция - расходник. (она не отслеживается в заказах на производство)" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" -msgstr "" +msgstr "Перерасход" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" -msgstr "" +msgstr "Расчетное количество перерасходов производства (абсолютное или процентное)" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" -msgstr "" +msgstr "Записи о позиции BOM" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" -msgstr "" +msgstr "Контрольная сумма" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" -msgstr "" +msgstr "Проверен" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Разрешить разновидности" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" -msgstr "" +msgstr "Складские позиции для разновидностей деталей могут быть использованы для этой позиции BOM" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "Для отслеживаемых деталей количество должно быть целым числом" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" -msgstr "" - -#: part/models.py:4305 -msgid "Substitute part" -msgstr "" +msgstr "Позиция BOM-родителя" #: part/models.py:4321 +msgid "Substitute part" +msgstr "Замена детали" + +#: part/models.py:4337 msgid "Part 1" msgstr "Часть 1" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "Часть 2" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "Выберите связанную часть" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" -msgstr "Валюта покупки этой единицы хранения" +msgstr "Валюта закупки складской позиции" #: part/serializers.py:349 msgid "No parts selected" -msgstr "Не выбран ни один элемент" +msgstr "Не выбрана ни одна деталь" #: part/serializers.py:359 msgid "Select category" @@ -6405,7 +6605,7 @@ msgstr "Выберите категорию" #: part/serializers.py:389 msgid "Original Part" -msgstr "" +msgstr "Оригинальная деталь" #: part/serializers.py:390 msgid "Select original part to duplicate" @@ -6413,7 +6613,7 @@ msgstr "" #: part/serializers.py:395 msgid "Copy Image" -msgstr "" +msgstr "Копировать Изображение" #: part/serializers.py:396 msgid "Copy image from original part" @@ -6421,7 +6621,7 @@ msgstr "" #: part/serializers.py:402 part/templates/part/detail.html:277 msgid "Copy BOM" -msgstr "" +msgstr "Скопировать BOM" #: part/serializers.py:403 msgid "Copy bill of materials from original part" @@ -6429,7 +6629,7 @@ msgstr "" #: part/serializers.py:409 msgid "Copy Parameters" -msgstr "" +msgstr "Скопировать параметры" #: part/serializers.py:410 msgid "Copy parameter data from original part" @@ -6437,11 +6637,11 @@ msgstr "" #: part/serializers.py:416 msgid "Copy Notes" -msgstr "" +msgstr "Копировать Записи" #: part/serializers.py:417 msgid "Copy notes from original part" -msgstr "" +msgstr "Скопировать записи из оригинальной детали" #: part/serializers.py:430 msgid "Initial Stock Quantity" @@ -6487,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Дублировать деталь" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" -msgstr "" +msgstr "Начальный запас" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "Копировать параметры категории" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "Копировать шаблоны параметров из выбранной категории деталей" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" -msgstr "" +msgstr "Существующее изображение" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" -msgstr "" +msgstr "Исключить складские позиции в внешних местах хранения" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" -msgstr "" +msgstr "Создать отчет" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" -msgstr "" +msgstr "Обновить детали" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" -msgstr "" +msgstr "Обновить" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "Подходящая деталь не найдена" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "Некорректное количество" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6685,15 +6885,15 @@ msgstr "" #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:2081 msgid "Total Quantity" -msgstr "" +msgstr "Общее количество" #: part/stocktake.py:225 msgid "Total Cost Min" -msgstr "" +msgstr "Общая стоимость Мин" #: part/stocktake.py:226 msgid "Total Cost Max" -msgstr "" +msgstr "Общая стоимость Макс" #: part/stocktake.py:284 msgid "Stocktake Report Available" @@ -6808,7 +7008,7 @@ msgstr "" #: part/templates/part/copy_part.html:14 #: part/templates/part/create_part.html:11 msgid "Possible Matching Parts" -msgstr "Возможные соответствующие детали" +msgstr "Возможные совпадения детали" #: part/templates/part/copy_part.html:15 #: part/templates/part/create_part.html:12 @@ -6838,19 +7038,19 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" -msgstr "" +msgstr "Инвентаризация" #: part/templates/part/detail.html:83 msgid "Part Test Templates" -msgstr "Тестовые шаблоны детали" +msgstr "Шаблоны тестирования детали" #: part/templates/part/detail.html:88 msgid "Add Test Template" -msgstr "Добавить тестовый шаблон" +msgstr "Добавить шаблон тестирования" #: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" @@ -6858,7 +7058,7 @@ msgstr "" #: part/templates/part/detail.html:156 msgid "Part Notes" -msgstr "" +msgstr "Записи Детали" #: part/templates/part/detail.html:171 msgid "Part Variants" @@ -6878,11 +7078,11 @@ msgstr "" #: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" -msgstr "" +msgstr "Связанные детали" #: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" -msgstr "" +msgstr "Добавить Связанные" #: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 @@ -6899,7 +7099,7 @@ msgstr "Экспорт BOM" #: part/templates/part/detail.html:266 msgid "Print BOM Report" -msgstr "" +msgstr "Печать отчета о BOM" #: part/templates/part/detail.html:272 msgid "BOM actions" @@ -6907,28 +7107,28 @@ msgstr "Действия с BOM" #: part/templates/part/detail.html:276 msgid "Upload BOM" -msgstr "" +msgstr "Загрузить BOM" #: part/templates/part/detail.html:278 msgid "Validate BOM" -msgstr "" +msgstr "Проверить BOM" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 #: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" -msgstr "" +msgstr "Добавить элемент BOM" #: part/templates/part/detail.html:297 msgid "Assemblies" -msgstr "Сборки" +msgstr "Производимые детали" #: part/templates/part/detail.html:313 msgid "Part Builds" -msgstr "" +msgstr "Производства детали" #: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" -msgstr "" +msgstr "Резервы заказа на производство" #: part/templates/part/detail.html:352 msgid "Part Suppliers" @@ -6940,15 +7140,15 @@ msgstr "" #: part/templates/part/detail.html:659 msgid "Related Part" -msgstr "" +msgstr "Связанная деталь" #: part/templates/part/detail.html:667 msgid "Add Related Part" -msgstr "" +msgstr "Добавить связанную деталь" #: part/templates/part/detail.html:752 msgid "Add Test Result Template" -msgstr "Добавить шаблон результата теста" +msgstr "" #: part/templates/part/import_wizard/ajax_part_upload.html:29 #: part/templates/part/import_wizard/part_upload.html:14 @@ -6957,7 +7157,7 @@ msgstr "" #: part/templates/part/import_wizard/part_upload.html:8 msgid "Return to Parts" -msgstr "" +msgstr "Вернуться в детали" #: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" @@ -6983,7 +7183,7 @@ msgstr "" #: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" -msgstr "" +msgstr "Формат" #: part/templates/part/import_wizard/part_upload.html:93 #: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 @@ -7007,7 +7207,7 @@ msgstr "Включить уведомления для данной детали #: stock/templates/stock/item_base.html:62 #: stock/templates/stock/location.html:74 msgid "Print Label" -msgstr "" +msgstr "Печать этикетки" #: part/templates/part/part_base.html:58 msgid "Show pricing information" @@ -7021,11 +7221,11 @@ msgstr "Действия со складом" #: part/templates/part/part_base.html:70 msgid "Count part stock" -msgstr "" +msgstr "Установить запасы детали" #: part/templates/part/part_base.html:76 msgid "Transfer part stock" -msgstr "" +msgstr "Переместить запасы детали" #: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" @@ -7033,11 +7233,11 @@ msgstr "Действия с деталью" #: part/templates/part/part_base.html:94 msgid "Duplicate part" -msgstr "" +msgstr "Дублировать деталь" #: part/templates/part/part_base.html:97 msgid "Edit part" -msgstr "" +msgstr "Редактировать деталь" #: part/templates/part/part_base.html:100 msgid "Delete part" @@ -7053,7 +7253,7 @@ msgstr "Деталь может быть собрана из других дет #: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" -msgstr "Деталь может быть использована в сборках" +msgstr "Деталь может быть использована в производстве других деталей" #: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" @@ -7077,7 +7277,7 @@ msgstr "" #: templates/js/translated/model_renderers.js:304 #: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 msgid "Inactive" -msgstr "" +msgstr "Неактивный" #: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" @@ -7086,12 +7286,12 @@ msgstr "" #: part/templates/part/part_base.html:163 #: part/templates/part/part_base.html:682 msgid "Show Part Details" -msgstr "" +msgstr "Показать описание детали" #: part/templates/part/part_base.html:218 #: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" -msgstr "Зарезервировано для сборки" +msgstr "Зарезервировано заказами на производство" #: part/templates/part/part_base.html:227 #: stock/templates/stock/item_base.html:381 @@ -7100,7 +7300,7 @@ msgstr "" #: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" -msgstr "" +msgstr "Можно произвести" #: part/templates/part/part_base.html:291 msgid "Minimum stock level" @@ -7111,7 +7311,7 @@ msgstr "Минимальный складской запас" #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" -msgstr "" +msgstr "Диапазон цен" #: part/templates/part/part_base.html:352 msgid "Latest Serial Number" @@ -7124,19 +7324,15 @@ msgstr "" #: part/templates/part/part_base.html:444 msgid "Part QR Code" -msgstr "" +msgstr "QR-код детали" #: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" -msgstr "" +msgstr "Рассчитать" #: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" @@ -7144,23 +7340,23 @@ msgstr "" #: part/templates/part/part_base.html:580 msgid "No matching images found" -msgstr "Подходящие изображения не найдены" +msgstr "" #: part/templates/part/part_base.html:676 msgid "Hide Part Details" -msgstr "" +msgstr "Скрыть описание детали" #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:76 #: part/templates/part/prices.html:227 templates/js/translated/pricing.js:485 msgid "Supplier Pricing" -msgstr "" +msgstr "Цены поставщика" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:95 #: part/templates/part/part_pricing.html:110 msgid "Unit Cost" -msgstr "" +msgstr "Стоимость единицы" #: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" @@ -7169,7 +7365,7 @@ msgstr "" #: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:90 #: part/templates/part/prices.html:250 msgid "BOM Pricing" -msgstr "" +msgstr "Цена BOM" #: part/templates/part/part_pricing.html:66 msgid "Unit Purchase Price" @@ -7213,15 +7409,15 @@ msgstr "Склад" #: part/templates/part/part_sidebar.html:30 #: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" -msgstr "" +msgstr "Цены" #: part/templates/part/part_sidebar.html:44 msgid "Scheduling" -msgstr "" +msgstr "Планировщик" #: part/templates/part/part_sidebar.html:54 msgid "Test Templates" -msgstr "Протестировать шаблон" +msgstr "Шаблоны тестирования" #: part/templates/part/part_thumb.html:11 msgid "Select from existing images" @@ -7229,7 +7425,7 @@ msgstr "Выбрать из существующих изображений" #: part/templates/part/prices.html:11 msgid "Pricing Overview" -msgstr "" +msgstr "Обзор цен" #: part/templates/part/prices.html:14 msgid "Refresh Part Pricing" @@ -7246,39 +7442,39 @@ msgstr "" #: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" -msgstr "" +msgstr "Редактировать" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 #: templates/js/translated/stock.js:2216 msgid "Last Updated" -msgstr "" +msgstr "Последнее обновление" #: part/templates/part/prices.html:37 part/templates/part/prices.html:127 msgid "Price Category" -msgstr "" +msgstr "Ценовая категория" #: part/templates/part/prices.html:38 part/templates/part/prices.html:128 msgid "Minimum" -msgstr "" +msgstr "Минимум" #: part/templates/part/prices.html:39 part/templates/part/prices.html:129 msgid "Maximum" -msgstr "" +msgstr "Максимум" #: part/templates/part/prices.html:51 part/templates/part/prices.html:174 msgid "Internal Pricing" -msgstr "" +msgstr "Внутренняя цена" #: part/templates/part/prices.html:64 part/templates/part/prices.html:206 msgid "Purchase History" -msgstr "" +msgstr "История Закупок" #: part/templates/part/prices.html:98 part/templates/part/prices.html:274 msgid "Variant Pricing" -msgstr "" +msgstr "Цены вариантов" #: part/templates/part/prices.html:106 msgid "Pricing Overrides" @@ -7286,11 +7482,11 @@ msgstr "" #: part/templates/part/prices.html:113 msgid "Overall Pricing" -msgstr "" +msgstr "Общая цена" #: part/templates/part/prices.html:149 part/templates/part/prices.html:326 msgid "Sale History" -msgstr "" +msgstr "История Продаж" #: part/templates/part/prices.html:157 msgid "Sale price data is not available for this part" @@ -7305,7 +7501,7 @@ msgstr "" #: part/templates/part/prices.html:275 part/templates/part/prices.html:298 #: part/templates/part/prices.html:327 msgid "Jump to overview" -msgstr "" +msgstr "Перейти к обзору" #: part/templates/part/prices.html:180 msgid "Add Internal Price Break" @@ -7313,7 +7509,7 @@ msgstr "" #: part/templates/part/prices.html:297 msgid "Sale Pricing" -msgstr "" +msgstr "Цена Продаж" #: part/templates/part/prices.html:303 msgid "Add Sell Price Break" @@ -7321,16 +7517,16 @@ msgstr "" #: part/templates/part/pricing_javascript.html:24 msgid "Update Pricing" -msgstr "" +msgstr "Обновить цены" #: part/templates/part/stock_count.html:7 templates/js/translated/part.js:704 #: templates/js/translated/part.js:2140 templates/js/translated/part.js:2142 msgid "No Stock" -msgstr "" +msgstr "Нет запасов" #: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" -msgstr "" +msgstr "Низкий Запас" #: part/templates/part/upload_bom.html:8 msgid "Return to BOM" @@ -7351,7 +7547,7 @@ msgstr "Загрузить BOM" #: part/templates/part/upload_bom.html:29 msgid "Submit BOM Data" -msgstr "" +msgstr "Отправить данные BOM" #: part/templates/part/upload_bom.html:37 msgid "Requirements for BOM upload" @@ -7379,7 +7575,7 @@ msgstr "" #: part/views.py:111 msgid "Match References" -msgstr "" +msgstr "Ссылки на совпадение" #: part/views.py:275 #, python-brace-format @@ -7400,13 +7596,17 @@ msgstr "Изображение детали не найдено" #: part/views.py:545 msgid "Part Pricing" +msgstr "Цена Детали" + +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "Действие не указано" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Соответствующее действие не найдено" @@ -7458,20 +7658,20 @@ msgstr "" #: plugin/base/barcodes/api.py:508 plugin/base/barcodes/api.py:515 msgid "Barcode does not match an existing stock item" -msgstr "" +msgstr "Штрих-код не соответствует существующим складским позициям" #: plugin/base/barcodes/api.py:526 msgid "Stock item does not match line item" -msgstr "" +msgstr "Складская позиция не соответствует позиции" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" #: plugin/base/barcodes/api.py:559 msgid "Stock item allocated to sales order" -msgstr "" +msgstr "Складская позиция зарезервирована заказом на продажу" #: plugin/base/barcodes/api.py:563 msgid "Not enough information" @@ -7563,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7575,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7617,7 +7830,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:164 msgid "Open link" -msgstr "" +msgstr "Открыть ссылку" #: plugin/builtin/integration/currency_exchange.py:22 msgid "InvenTree Currency Exchange" @@ -7637,19 +7850,35 @@ msgstr "" #: plugin/builtin/labels/inventree_label.py:29 msgid "Debug mode" -msgstr "" +msgstr "Режим отладки" #: plugin/builtin/labels/inventree_label.py:30 msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" #: plugin/builtin/labels/label_sheet.py:34 msgid "Skip Labels" -msgstr "" +msgstr "Пропустить Этикетки" #: plugin/builtin/labels/label_sheet.py:35 msgid "Skip this number of labels when printing label sheets" @@ -7657,15 +7886,15 @@ msgstr "" #: plugin/builtin/labels/label_sheet.py:41 msgid "Border" -msgstr "" +msgstr "Граница" #: plugin/builtin/labels/label_sheet.py:42 msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" -msgstr "" +msgstr "Альбомная" #: plugin/builtin/labels/label_sheet.py:48 msgid "Print the label sheet in landscape mode" @@ -7735,91 +7964,119 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" -msgstr "" +msgstr "Ключ" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" -msgstr "" +msgstr "Ключ плагина" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "Имя Упаковки" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" -msgstr "" +msgstr "Установлено" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" -msgstr "" +msgstr "Образец плагина" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" +msgstr "Встроенный плагин" + +#: plugin/models.py:173 +msgid "Package Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" -msgstr "" +msgstr "Плагин" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" -msgstr "" +msgstr "Метод" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "Автор не найден" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" #: plugin/samples/integration/sample.py:52 msgid "Enable PO" -msgstr "" +msgstr "Включить PO" #: plugin/samples/integration/sample.py:53 msgid "Enable PO functionality in InvenTree interface" @@ -7827,7 +8084,7 @@ msgstr "" #: plugin/samples/integration/sample.py:58 msgid "API Key" -msgstr "" +msgstr "Ключ API" #: plugin/samples/integration/sample.py:59 msgid "Key required for accessing external API" @@ -7835,7 +8092,7 @@ msgstr "" #: plugin/samples/integration/sample.py:63 msgid "Numerical" -msgstr "" +msgstr "Числовой" #: plugin/samples/integration/sample.py:64 msgid "A numerical setting" @@ -7843,7 +8100,7 @@ msgstr "" #: plugin/samples/integration/sample.py:69 msgid "Choice Setting" -msgstr "" +msgstr "Настройки выбора" #: plugin/samples/integration/sample.py:70 msgid "A setting with multiple choices" @@ -7857,68 +8114,82 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "Исходная ссылка" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "Версия" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" -msgstr "" +msgstr "Полная перезагрузка" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" -msgstr "" +msgstr "Принудительная перезагрузка" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" -msgstr "" +msgstr "Собрать плагины" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" +msgstr "Активировать плагин" + +#: plugin/serializers.py:196 +msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:179 -msgid "Activate this plugin" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" msgstr "" #: report/api.py:175 @@ -7932,7 +8203,7 @@ msgstr "" #: report/api.py:331 msgid "Test report" -msgstr "" +msgstr "Отчет тестирования" #: report/helpers.py:15 msgid "A4" @@ -7944,119 +8215,119 @@ msgstr "" #: report/helpers.py:17 msgid "Legal" -msgstr "" +msgstr "Правовая информация" #: report/helpers.py:18 msgid "Letter" -msgstr "" +msgstr "Письмо" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "Название шаблона" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "Файл шаблона отчёта" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" -msgstr "" +msgstr "Включить результаты тестирования для складских позиций установленных в производимую деталь" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" -msgstr "" +msgstr "Фильтры производства" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" -msgstr "" +msgstr "Фильтры запросов производства (разделенные запятыми список ключей=значения пар ключей" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" -msgstr "" +msgstr "Фильтры деталей" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" -msgstr "" +msgstr "Сниппет" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" -msgstr "" +msgstr "Объект" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" -msgstr "" +msgstr "Необходимые материалы" #: report/templates/report/inventree_build_order_base.html:146 msgid "Required For" -msgstr "" +msgstr "Требуется для" #: report/templates/report/inventree_po_report_base.html:15 msgid "Supplier was deleted" @@ -8070,26 +8341,26 @@ msgstr "" #: templates/js/translated/purchase_order.js:2112 #: templates/js/translated/sales_order.js:1837 msgid "Unit Price" -msgstr "" +msgstr "Цена за Единицу" #: report/templates/report/inventree_po_report_base.html:55 #: report/templates/report/inventree_return_order_report_base.html:48 #: report/templates/report/inventree_so_report_base.html:55 msgid "Extra Line Items" -msgstr "" +msgstr "Дополнительные элементы" #: report/templates/report/inventree_po_report_base.html:72 #: report/templates/report/inventree_so_report_base.html:72 #: templates/js/translated/purchase_order.js:2014 #: templates/js/translated/sales_order.js:1806 msgid "Total" -msgstr "" +msgstr "Всего" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8106,29 +8377,29 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" -msgstr "Тестовый отчет по единице хранения на складе" +msgstr "Отчет тестирования складской позиции" #: report/templates/report/inventree_test_report_base.html:97 msgid "Test Results" -msgstr "Результаты проверки" +msgstr "Результаты тестирования" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" -msgstr "Проверка" +msgstr "Тестирование" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" -msgstr "" +msgstr "Результат" #: report/templates/report/inventree_test_report_base.html:130 msgid "Pass" -msgstr "" +msgstr "Прошел" #: report/templates/report/inventree_test_report_base.html:132 msgid "Fail" -msgstr "" +msgstr "Провален" #: report/templates/report/inventree_test_report_base.html:139 msgid "No result (required)" @@ -8136,157 +8407,157 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:141 msgid "No result" -msgstr "" +msgstr "Нет результата" #: report/templates/report/inventree_test_report_base.html:154 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" -msgstr "" +msgstr "Установленные элементы" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" -msgstr "" +msgstr "Серийный номер" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "Код места хранения" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" -msgstr "" +msgstr "Имя Места Хранения" #: stock/admin.py:64 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" -msgstr "Путь местоположения" +msgstr "Путь места хранения" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" -msgstr "" +msgstr "Код складской позиции" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" -msgstr "" +msgstr "Код статуса" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "Код детали поставщика" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" -msgstr "" +msgstr "ID Поставщика" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" -msgstr "" +msgstr "Имя поставщика" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" -msgstr "" +msgstr "ID Клиента" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" -msgstr "" +msgstr "Установлено в" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" -msgstr "Код сборки" +msgstr "Код производства" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" -msgstr "" +msgstr "ID заказа на продажу" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" -msgstr "" +msgstr "Требуется рецензия" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" -msgstr "" +msgstr "Истекает" #: stock/api.py:540 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" -msgstr "" +msgstr "Древо Деталей" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" -msgstr "" +msgstr "Залежалый" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "Необходимо указать количество" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8298,23 +8569,23 @@ msgstr "Место хранения" msgid "Stock Locations" msgstr "Места хранения" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" -msgstr "" +msgstr "Владелец" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "Выберите владельца" #: stock/models.py:166 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." -msgstr "" +msgstr "Складские позиции не могут находиться в структурных местах хранения, но могут находиться в дочерних местах хранения." #: stock/models.py:173 templates/js/translated/stock.js:2752 #: templates/js/translated/table_filters.js:243 msgid "External" -msgstr "" +msgstr "Внешний" #: stock/models.py:174 msgid "This is an external stock location" @@ -8323,7 +8594,7 @@ msgstr "" #: stock/models.py:180 templates/js/translated/stock.js:2761 #: templates/js/translated/table_filters.js:246 msgid "Location type" -msgstr "" +msgstr "Тип Места Хранения" #: stock/models.py:184 msgid "Stock location type of this location" @@ -8331,227 +8602,227 @@ msgstr "" #: stock/models.py:253 msgid "You cannot make this stock location structural because some stock items are already located into it!" -msgstr "" +msgstr "Вы не можете сделать это место хранение структурным, потому, что некоторые складские позиции уже находятся в нем!" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" -msgstr "" +msgstr "Складские позиции не могут находиться в структурных местах хранения!" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" -msgstr "" +msgstr "Складская позиция не может быть создана для виртуальных деталей" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" -msgstr "" +msgstr "Элемент должен иметь ссылку на производство, если is_building=True" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" -msgstr "" +msgstr "Ссылка на производство не указывает на тот же элемент" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" -msgstr "Родительская единица хранения" +msgstr "Складская позиция" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "Базовая деталь" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" -msgstr "Выберите соответствующего поставщика части для этого товара на складе" +msgstr "Выберите соответствующего поставщика детали для этой складской позиции" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" -msgstr "" +msgstr "Где находиться эта складская позиция?" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" -msgstr "" +msgstr "Упаковка этой складской позиции хранится в" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" -msgstr "Код партии для этой единицы хранения" +msgstr "Код партии для этой складской позиции" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "Количество на складе" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" -msgstr "Исходная сборка" +msgstr "Исходное производство" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" -msgstr "" +msgstr "Производства для этой складской позиции" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" -msgstr "" +msgstr "Поглощен" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" -msgstr "" +msgstr "Заказ на производство, который поглотил эту складскую позицию" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 -msgid "Purchase order for this stock item" -msgstr "" - #: stock/models.py:866 +msgid "Purchase order for this stock item" +msgstr "Заказ на закупку для этой складской позиции" + +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" -msgstr "" +msgstr "Дата истечения срока годности для складской позиции. Остатки будут считаться просроченными после этой даты" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "Удалить при обнулении" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" -msgstr "Удалить эту единицу хранения при обнулении складского запаса" +msgstr "Удалить эту складскую позицию при обнулении складского запаса" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "Деталь не является отслеживаемой" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "Серийные номера уже существуют" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" -msgstr "" - -#: stock/models.py:1561 -msgid "Stock item is installed in another item" -msgstr "" - -#: stock/models.py:1564 -msgid "Stock item contains other items" -msgstr "" +msgstr "Складская позиция была назначена заказу на продажу" #: stock/models.py:1567 -msgid "Stock item has been assigned to a customer" -msgstr "" +msgid "Stock item is installed in another item" +msgstr "Складская позиция установлена в другую деталь" #: stock/models.py:1570 -msgid "Stock item is currently in production" -msgstr "" +msgid "Stock item contains other items" +msgstr "Складская позиция содержит другие детали" #: stock/models.py:1573 +msgid "Stock item has been assigned to a customer" +msgstr "Складская позиция была назначена покупателю" + +#: stock/models.py:1576 +msgid "Stock item is currently in production" +msgstr "Складская позиция в производстве" + +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" -msgstr "" +msgstr "Дублировать складские позиции" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" -msgstr "" +msgstr "Складские позиции должны ссылаться на одну и ту же деталь" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" -msgstr "" +msgstr "Складские позиции должны ссылаться на одну и ту же деталь поставщика" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" -msgstr "" +msgstr "Название теста" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" -msgstr "" +msgstr "Результат тестирования" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" -msgstr "" +msgstr "Записи Тестирования" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8559,176 +8830,180 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" -msgstr "" +msgstr "Закупочная цена для этой складской позиции, за единицу или за упаковку" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" -msgstr "Введите количество товаров на складе для сериализации" +msgstr "Введите количество складских позиций для сериализации" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "Введите серийные номера для новых элементов" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" -msgstr "" +msgstr "Опциональное поле записей" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" -msgstr "Выберите товар на складе для установки" +msgstr "Выберите складскую позицию для установки" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" -msgstr "" +msgstr "Добавить запись к транзакции (необязательно)" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" -msgstr "" +msgstr "Складская позиция недоступна" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "Выбранная деталь отсутствует в спецификации" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" -msgstr "" +msgstr "Выберите деталь в которую будет преобразована складская позиция" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" -msgstr "" +msgstr "Невозможно преобразовать складскую позицию с назначенной деталью поставщика" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" -msgstr "Выберите товары на складе для изменения статуса" +msgstr "Выберите складские позиции для изменения статуса" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" -msgstr "Не выбрано ни одного товара на складе" +msgstr "Не выбрано ни одной складской позиции" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" -msgstr "" +msgstr "Элемент зарезервирован для заказа на производство" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" -msgstr "" +msgstr "Покупатель для назначения складских позиций" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "Выбранная компания не является покупателем" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" -msgstr "" +msgstr "Записи о назначенных запасах" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" -msgstr "" +msgstr "Необходимо предоставить список складских позиций" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" -msgstr "" +msgstr "Записи о слияниях запасов" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" -msgstr "" +msgstr "Разрешить слияние складских позиций с различными поставщиками" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" -msgstr "" +msgstr "Разрешить слияние складских позиций с различными статусами" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" +msgstr "Необходимо предоставить как минимум 2 складские позиции" + +#: stock/serializers.py:1201 +msgid "No Change" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" -msgstr "" +msgstr "Статус складской позиции" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" -msgstr "" +msgstr "Записи о перемещениях запасов" #: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" -msgstr "" +msgstr "История запасов" #: stock/templates/stock/item.html:63 msgid "Child Stock Items" -msgstr "Дочерние единицы хранения" +msgstr "Дочерние складские позиции" #: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" -msgstr "Эта единица хранения не имеет дочерних элементов" +msgstr "Эта складская позиция не имеет дочерних элементов" #: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" -msgstr "Данные испытаний" +msgstr "Данные тестов" #: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" @@ -8736,45 +9011,45 @@ msgstr "Отчет тестирования" #: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" -msgstr "" +msgstr "Удалить данные тестирования" #: stock/templates/stock/item.html:93 msgid "Add Test Data" -msgstr "" +msgstr "Добавить Данные Тестирования" #: stock/templates/stock/item.html:125 msgid "Stock Item Notes" -msgstr "Заметки о единице хранения" +msgstr "Записи складской позиции" #: stock/templates/stock/item.html:140 msgid "Installed Stock Items" -msgstr "Установленные единицы хранения" +msgstr "Установленные складские позиции" #: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" -msgstr "Установить единицу хранения" +msgstr "Установить складскую позицию" #: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" -msgstr "" +msgstr "Удалить все результаты тестирования для этой складской позиции" #: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" -msgstr "" +msgstr "Добавить Результат Тестирования" #: stock/templates/stock/item_base.html:33 msgid "Locate stock item" -msgstr "" +msgstr "Найти складскую позицию" #: stock/templates/stock/item_base.html:51 msgid "Scan to Location" -msgstr "" +msgstr "Сканировать в место хранения" #: stock/templates/stock/item_base.html:59 #: stock/templates/stock/location.html:70 #: templates/js/translated/filters.js:431 msgid "Printing actions" -msgstr "" +msgstr "Действия печати" #: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" @@ -8783,26 +9058,26 @@ msgstr "" #: stock/templates/stock/item_base.html:79 #: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" -msgstr "" +msgstr "Установить запасы" #: stock/templates/stock/item_base.html:81 #: templates/js/translated/stock.js:1774 msgid "Add stock" -msgstr "" +msgstr "Добавить Остатки" #: stock/templates/stock/item_base.html:82 #: templates/js/translated/stock.js:1783 msgid "Remove stock" -msgstr "" +msgstr "Удалить запасы" #: stock/templates/stock/item_base.html:85 msgid "Serialize stock" -msgstr "" +msgstr "Сериализовать запасы" #: stock/templates/stock/item_base.html:88 #: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" -msgstr "" +msgstr "Переместить запасы" #: stock/templates/stock/item_base.html:91 #: templates/js/translated/stock.js:1855 @@ -8811,23 +9086,23 @@ msgstr "" #: stock/templates/stock/item_base.html:94 msgid "Return to stock" -msgstr "" +msgstr "Вернуть на склад" #: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" -msgstr "Удалить единицу хранения" +msgstr "Удалить складскую позицию" #: stock/templates/stock/item_base.html:97 msgid "Uninstall" -msgstr "" +msgstr "Удалить" #: stock/templates/stock/item_base.html:101 msgid "Install stock item" -msgstr "Установить единицу хранения" +msgstr "Установить складскую позицию" #: stock/templates/stock/item_base.html:101 msgid "Install" -msgstr "" +msgstr "Установить" #: stock/templates/stock/item_base.html:115 msgid "Convert to variant" @@ -8835,20 +9110,20 @@ msgstr "Преобразовать в разновидность" #: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" -msgstr "Дублировать единицу хранения" +msgstr "Дублировать складскую позицию" #: stock/templates/stock/item_base.html:120 msgid "Edit stock item" -msgstr "Редактировать единицу хранения" +msgstr "Редактировать складскую позицию" #: stock/templates/stock/item_base.html:123 msgid "Delete stock item" -msgstr "Удалить единицу хранения" +msgstr "Удалить складскую позицию" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" -msgstr "Сборка" +msgstr "Производство" #: stock/templates/stock/item_base.html:193 msgid "Parent Item" @@ -8860,40 +9135,40 @@ msgstr "" #: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." -msgstr "" +msgstr "Вы не в списке владельцев этого элемента. Складская позиция не может быть отредактирована." #: stock/templates/stock/item_base.html:252 #: stock/templates/stock/location.html:149 msgid "Read only" -msgstr "" +msgstr "Только для чтения" #: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" -msgstr "" +msgstr "Эта складская позиция не доступна" #: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." -msgstr "" +msgstr "Эта складская позиция находиться в производстве и не может быть отредактирована." #: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." -msgstr "" +msgstr "Редактировать складскую позицию из производства." #: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" -msgstr "" +msgstr "Эта складская позиция зарезервирована для заказа на продажу" #: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" -msgstr "" +msgstr "Этот складская позиция зарезервирована заказом на производство" #: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" -msgstr "" +msgstr "Это отслеживаемая складская позиция. Она имеет уникальный серийный номер и количество не может быть изменено" #: stock/templates/stock/item_base.html:317 msgid "previous page" -msgstr "" +msgstr "предыдущая страница" #: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" @@ -8901,7 +9176,7 @@ msgstr "" #: stock/templates/stock/item_base.html:326 msgid "next page" -msgstr "" +msgstr "следующая страница" #: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" @@ -8909,20 +9184,20 @@ msgstr "" #: stock/templates/stock/item_base.html:340 msgid "Available Quantity" -msgstr "" +msgstr "Доступный запас" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" -msgstr "" +msgstr "Место хранения не установлено" #: stock/templates/stock/item_base.html:413 msgid "Tests" -msgstr "" +msgstr "Тесты" #: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" -msgstr "" +msgstr "Эта складская позиция не прошла требуемое тестирование" #: stock/templates/stock/item_base.html:437 #, python-format @@ -8932,7 +9207,7 @@ msgstr "" #: stock/templates/stock/item_base.html:437 #: templates/js/translated/table_filters.js:435 users/models.py:163 msgid "Expired" -msgstr "" +msgstr "Просрочен" #: stock/templates/stock/item_base.html:439 #, python-format @@ -8946,7 +9221,7 @@ msgstr "" #: stock/templates/stock/item_base.html:507 #: templates/js/translated/stock.js:1922 msgid "stock item" -msgstr "" +msgstr "складская позиция" #: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" @@ -8954,11 +9229,11 @@ msgstr "" #: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" -msgstr "" +msgstr "QR-код складской позиции" #: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" -msgstr "" +msgstr "Привязать штрих-код к складской позиции" #: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." @@ -8974,15 +9249,15 @@ msgstr "" #: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" -msgstr "" +msgstr "Преобразовать складскую позицию" #: stock/templates/stock/item_base.html:662 msgid "Return to Stock" -msgstr "" +msgstr "Вернуть на склад" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." -msgstr "" +msgstr "Создать сериализированные позиции из этой складской позиции" #: stock/templates/stock/item_serialize.html:7 msgid "Select quantity to serialize, and unique serial numbers." @@ -8998,11 +9273,11 @@ msgstr "" #: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" -msgstr "" +msgstr "Сканировать складские позиции в это место хранения" #: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" -msgstr "" +msgstr "Сканировать в складские позиции" #: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" @@ -9057,7 +9332,7 @@ msgstr "Новое место хранения" #: stock/templates/stock/location.html:289 #: templates/js/translated/stock.js:2543 msgid "stock location" -msgstr "" +msgstr "места хранения" #: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" @@ -9073,11 +9348,11 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." -msgstr "" +msgstr "Загрузка..." #: stock/templates/stock/stock_sidebar.html:5 msgid "Stock Tracking" -msgstr "" +msgstr "Запас" #: stock/templates/stock/stock_sidebar.html:8 msgid "Allocations" @@ -9085,7 +9360,7 @@ msgstr "Места хранения" #: stock/templates/stock/stock_sidebar.html:20 msgid "Child Items" -msgstr "" +msgstr "Дочерние элементы" #: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7 msgid "Permission Denied" @@ -9106,7 +9381,7 @@ msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 #: templates/navbar.html:150 msgid "Login" -msgstr "" +msgstr "Логин" #: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" @@ -9139,15 +9414,15 @@ msgstr "" #: templates/InvenTree/index.html:7 msgid "Index" -msgstr "" +msgstr "Индекс" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "" +msgstr "Детали с подпиской" #: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "" +msgstr "Категории с подпиской" #: templates/InvenTree/index.html:62 msgid "Latest Parts" @@ -9155,59 +9430,59 @@ msgstr "Последние детали" #: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" -msgstr "BOM для проверки" +msgstr "BOM ожидающие проверки" #: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "" +msgstr "Недавно обновленные" #: templates/InvenTree/index.html:134 msgid "Depleted Stock" -msgstr "" +msgstr "Истощенный Запас" #: templates/InvenTree/index.html:148 msgid "Required for Build Orders" -msgstr "Требуется для сборки" +msgstr "Требуется для заказов на производство" #: templates/InvenTree/index.html:156 msgid "Expired Stock" -msgstr "" +msgstr "Просроченные запасы" #: templates/InvenTree/index.html:172 msgid "Stale Stock" -msgstr "" +msgstr "Залежалые Запасы" #: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "Активные заказы на сборку" +msgstr "Активные заказы на производство" #: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "Просроченные заказы на сборку" +msgstr "Просроченные заказы на производство" #: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" -msgstr "" +msgstr "Ожидающие заказы на закупку" #: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" -msgstr "" +msgstr "Просроченные заказы на закупку" #: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" -msgstr "" +msgstr "Ожидающие заказы на продажу" #: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" -msgstr "" +msgstr "Просроченные заказы на продажу" #: templates/InvenTree/index.html:299 msgid "InvenTree News" -msgstr "" +msgstr "Новости InvenTree" #: templates/InvenTree/index.html:301 msgid "Current News" -msgstr "" +msgstr "Текущие новости" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" @@ -9226,14 +9501,14 @@ msgstr "" #: templates/InvenTree/notifications/inbox.html:13 #: templates/InvenTree/notifications/inbox.html:14 msgid "Mark all as read" -msgstr "" +msgstr "Пометить как прочитанное" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 #: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" -msgstr "" +msgstr "Уведомления" #: templates/InvenTree/notifications/notifications.html:38 msgid "No unread notifications found" @@ -9254,15 +9529,15 @@ msgstr "" #: templates/InvenTree/notifications/sidebar.html:8 msgid "Inbox" -msgstr "" +msgstr "Входящие" #: templates/InvenTree/notifications/sidebar.html:10 msgid "History" -msgstr "" +msgstr "История" #: templates/InvenTree/search.html:8 msgid "Search Results" -msgstr "" +msgstr "Результаты поиска" #: templates/InvenTree/settings/barcode.html:8 msgid "Barcode Settings" @@ -9270,7 +9545,7 @@ msgstr "Настройки штрих-кода" #: templates/InvenTree/settings/build.html:8 msgid "Build Order Settings" -msgstr "Настройки заказа на сборку" +msgstr "Настройки заказа на производство" #: templates/InvenTree/settings/category.html:7 msgid "Category Settings" @@ -9296,7 +9571,7 @@ msgstr "" #: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5 #: templates/socialaccount/signup.html:5 msgid "Signup" -msgstr "" +msgstr "Регистрация" #: templates/InvenTree/settings/login.html:34 msgid "Single Sign On" @@ -9339,11 +9614,11 @@ msgstr "Настройки деталей" #: templates/InvenTree/settings/part.html:42 msgid "Part Import" -msgstr "" +msgstr "Импорт деталей" #: templates/InvenTree/settings/part.html:46 msgid "Import Part" -msgstr "" +msgstr "Импорт детали" #: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" @@ -9360,11 +9635,11 @@ msgstr "" #: templates/InvenTree/settings/physical_units.html:8 #: templates/InvenTree/settings/sidebar.html:35 msgid "Physical Units" -msgstr "" +msgstr "Физические единицы" #: templates/InvenTree/settings/physical_units.html:12 msgid "Add Unit" -msgstr "" +msgstr "Добавить Единицу" #: templates/InvenTree/settings/plugin.html:9 #: templates/InvenTree/settings/sidebar.html:64 @@ -9378,19 +9653,19 @@ msgstr "" #: templates/InvenTree/settings/plugin.html:35 #: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" -msgstr "" +msgstr "Плагины" #: templates/InvenTree/settings/plugin.html:41 #: templates/InvenTree/settings/plugin.html:42 #: templates/js/translated/plugin.js:151 msgid "Install Plugin" -msgstr "" +msgstr "Установить плагины" #: templates/InvenTree/settings/plugin.html:44 #: templates/InvenTree/settings/plugin.html:45 #: templates/js/translated/plugin.js:224 msgid "Reload Plugins" -msgstr "" +msgstr "Перезагрузить плагины" #: templates/InvenTree/settings/plugin.html:55 msgid "External plugins are not enabled for this InvenTree installation" @@ -9402,29 +9677,24 @@ msgstr "" #: templates/InvenTree/settings/plugin.html:79 msgid "Stage" -msgstr "" +msgstr "Стадия" #: templates/InvenTree/settings/plugin.html:81 #: templates/js/translated/notification.js:76 msgid "Message" -msgstr "" +msgstr "Сообщения" #: templates/InvenTree/settings/plugin_settings.html:16 msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:61 msgid "License" -msgstr "" +msgstr "Лицензия" #: templates/InvenTree/settings/plugin_settings.html:70 msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running." @@ -9454,7 +9724,7 @@ msgstr "" #: templates/js/translated/plugin.js:68 #: templates/js/translated/table_filters.js:492 msgid "Builtin" -msgstr "" +msgstr "Встроенный" #: templates/InvenTree/settings/plugin_settings.html:101 msgid "This is a builtin plugin which cannot be disabled" @@ -9464,7 +9734,7 @@ msgstr "" #: templates/js/translated/plugin.js:72 #: templates/js/translated/table_filters.js:496 msgid "Sample" -msgstr "" +msgstr "Образец" #: templates/InvenTree/settings/plugin_settings.html:108 msgid "This is a sample plugin" @@ -9472,17 +9742,17 @@ msgstr "" #: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" -msgstr "" +msgstr "Автор правки" #: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" -msgstr "" +msgstr "Дата коммита" #: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" -msgstr "" +msgstr "Хеш коммита" #: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" @@ -9494,24 +9764,24 @@ msgstr "Настройки заказа на закупку" #: templates/InvenTree/settings/pricing.html:7 msgid "Pricing Settings" -msgstr "" +msgstr "Настройки ценообразования" #: templates/InvenTree/settings/pricing.html:34 msgid "Exchange Rates" -msgstr "" +msgstr "Курсы Валют" #: templates/InvenTree/settings/pricing.html:38 msgid "Update Now" -msgstr "" +msgstr "Обновить Сейчас" #: templates/InvenTree/settings/pricing.html:46 #: templates/InvenTree/settings/pricing.html:50 msgid "Last Update" -msgstr "" +msgstr "Последнее обновление" #: templates/InvenTree/settings/pricing.html:50 msgid "Never" -msgstr "" +msgstr "Никогда" #: templates/InvenTree/settings/project_codes.html:8 msgid "Project Code Settings" @@ -9520,12 +9790,12 @@ msgstr "" #: templates/InvenTree/settings/project_codes.html:21 #: templates/InvenTree/settings/sidebar.html:33 msgid "Project Codes" -msgstr "" +msgstr "Коды проекта" #: templates/InvenTree/settings/project_codes.html:25 #: templates/InvenTree/settings/settings_staff_js.html:216 msgid "New Project Code" -msgstr "" +msgstr "Новый код проекта" #: templates/InvenTree/settings/report.html:8 #: templates/InvenTree/settings/user_reporting.html:9 @@ -9538,7 +9808,7 @@ msgstr "" #: templates/InvenTree/settings/setting.html:31 msgid "No value set" -msgstr "" +msgstr "Значение не задано" #: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" @@ -9546,7 +9816,7 @@ msgstr "Изменить настройки" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" -msgstr "Изменить настройки плагинов" +msgstr "" #: templates/InvenTree/settings/settings_js.html:60 msgid "Edit Notification Setting" @@ -9554,11 +9824,11 @@ msgstr "" #: templates/InvenTree/settings/settings_js.html:63 msgid "Edit Global Setting" -msgstr "Изменить глобальные настройки" +msgstr "" #: templates/InvenTree/settings/settings_js.html:65 msgid "Edit User Setting" -msgstr "Изменить настройки пользователя" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:49 msgid "Rate" @@ -9567,13 +9837,13 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Удалить" #: templates/InvenTree/settings/settings_staff_js.html:95 msgid "Edit Custom Unit" -msgstr "" +msgstr "Редактировать единицу" #: templates/InvenTree/settings/settings_staff_js.html:110 msgid "Delete Custom Unit" @@ -9581,16 +9851,16 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:124 msgid "New Custom Unit" -msgstr "" +msgstr "Новая пользовательская единица" #: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" -msgstr "" +msgstr "группа" #: templates/InvenTree/settings/settings_staff_js.html:175 #: templates/InvenTree/settings/settings_staff_js.html:189 @@ -9604,7 +9874,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:285 msgid "No category parameter templates found" -msgstr "Шаблоны параметров категории не найдены" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 #: templates/js/translated/part.js:1645 @@ -9638,7 +9908,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:461 msgid "Location count" -msgstr "" +msgstr "Количество мест хранения" #: templates/InvenTree/settings/settings_staff_js.html:466 #: templates/InvenTree/settings/settings_staff_js.html:480 @@ -9665,11 +9935,11 @@ msgstr "Настройки пользователя" #: templates/InvenTree/settings/sidebar.html:9 msgid "Account" -msgstr "" +msgstr "Аккуант" #: templates/InvenTree/settings/sidebar.html:11 msgid "Display" -msgstr "" +msgstr "Отображение" #: templates/InvenTree/settings/sidebar.html:13 msgid "Home Page" @@ -9685,7 +9955,7 @@ msgstr "Поиск" #: templates/InvenTree/settings/sidebar.html:19 #: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" -msgstr "" +msgstr "Отчеты" #: templates/InvenTree/settings/sidebar.html:24 msgid "Global Settings" @@ -9693,15 +9963,15 @@ msgstr "Глобальные настройки" #: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9 msgid "Server" -msgstr "" +msgstr "Сервер" #: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" -msgstr "" +msgstr "Метки" #: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" -msgstr "" +msgstr "Категории" #: templates/InvenTree/settings/so.html:7 msgid "Sales Order Settings" @@ -9723,19 +9993,19 @@ msgstr "Настройки учётной записи" #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 msgid "Change Password" -msgstr "" +msgstr "Изменить пароль" #: templates/InvenTree/settings/user.html:33 msgid "Username" -msgstr "" +msgstr "Имя пользователя" #: templates/InvenTree/settings/user.html:37 msgid "First Name" -msgstr "" +msgstr "Имя" #: templates/InvenTree/settings/user.html:41 msgid "Last Name" -msgstr "" +msgstr "Фамилия" #: templates/InvenTree/settings/user.html:55 msgid "The following email addresses are associated with your account:" @@ -9743,20 +10013,20 @@ msgstr "Следующие адреса электронной почты свя #: templates/InvenTree/settings/user.html:76 msgid "Verified" -msgstr "" +msgstr "Проверено" #: templates/InvenTree/settings/user.html:78 msgid "Unverified" -msgstr "" +msgstr "Непроверенный" #: templates/InvenTree/settings/user.html:80 #: templates/js/translated/company.js:947 msgid "Primary" -msgstr "" +msgstr "Основной" #: templates/InvenTree/settings/user.html:86 msgid "Make Primary" -msgstr "" +msgstr "Сделать основным" #: templates/InvenTree/settings/user.html:87 msgid "Re-send Verification" @@ -9780,7 +10050,7 @@ msgstr "Добавить EMail" #: templates/InvenTree/settings/user.html:120 msgid "Multifactor" -msgstr "" +msgstr "Многофакторная" #: templates/InvenTree/settings/user.html:125 msgid "You have these factors available:" @@ -9792,7 +10062,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:141 msgid "Static" -msgstr "" +msgstr "Статичный" #: templates/InvenTree/settings/user.html:150 msgid "Multifactor authentication is not configured for your account" @@ -9800,7 +10070,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:157 msgid "Change factors" -msgstr "" +msgstr "Факторы изменения" #: templates/InvenTree/settings/user.html:158 msgid "Setup multifactor" @@ -9812,7 +10082,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:168 msgid "Active Sessions" -msgstr "" +msgstr "Активные Сессии" #: templates/InvenTree/settings/user.html:174 msgid "Log out active sessions (except this one)" @@ -9832,15 +10102,15 @@ msgstr "" #: templates/InvenTree/settings/user.html:189 msgid "IP Address" -msgstr "" +msgstr "IP Адрес" #: templates/InvenTree/settings/user.html:190 msgid "Device" -msgstr "" +msgstr "Устройство" #: templates/InvenTree/settings/user.html:191 msgid "Last Activity" -msgstr "" +msgstr "Последняя активность" #: templates/InvenTree/settings/user.html:204 #, python-format @@ -9850,11 +10120,11 @@ msgstr "" #: templates/InvenTree/settings/user.html:206 #, python-format msgid "%(time)s ago" -msgstr "" +msgstr "%(time)s назад" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "Вы действительно хотите удалить выбранный адрес электронной почты?" +msgstr "" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" @@ -9870,7 +10140,7 @@ msgstr "Выберите тему" #: templates/InvenTree/settings/user_display.html:50 msgid "Set Theme" -msgstr "" +msgstr "Применить Тему" #: templates/InvenTree/settings/user_display.html:58 msgid "Language Settings" @@ -9891,7 +10161,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:92 msgid "Set Language" -msgstr "" +msgstr "Установить язык" #: templates/InvenTree/settings/user_display.html:95 msgid "Some languages are not complete" @@ -9903,11 +10173,11 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:99 msgid "and hidden." -msgstr "" +msgstr "и скрыто." #: templates/InvenTree/settings/user_display.html:99 msgid "Show them too" -msgstr "" +msgstr "Показать их тоже" #: templates/InvenTree/settings/user_display.html:106 msgid "Help the translation efforts!" @@ -9943,7 +10213,7 @@ msgstr "" #: templates/InvenTree/settings/user_sso.html:58 msgid "Add SSO Account" -msgstr "" +msgstr "Добавить SSO аккаунт" #: templates/InvenTree/settings/user_sso.html:67 msgid "Single Sign On is not enabled for this server" @@ -9959,11 +10229,11 @@ msgstr "" #: templates/about.html:17 msgid "Up to Date" -msgstr "" +msgstr "Последняя версия" #: templates/about.html:19 msgid "Update Available" -msgstr "" +msgstr "Доступно обновление" #: templates/about.html:43 msgid "Commit Branch" @@ -9975,15 +10245,15 @@ msgstr "" #: templates/about.html:54 msgid "API Version" -msgstr "" +msgstr "Версия API" #: templates/about.html:59 msgid "Python Version" -msgstr "" +msgstr "Версия Python" #: templates/about.html:64 msgid "Django Version" -msgstr "" +msgstr "Версия Django" #: templates/about.html:69 msgid "View Code on GitHub" @@ -9991,11 +10261,11 @@ msgstr "Посмотреть код на GitHub" #: templates/about.html:74 msgid "Credits" -msgstr "" +msgstr "Авторы" #: templates/about.html:79 msgid "Mobile App" -msgstr "" +msgstr "Мобильное Приложение" #: templates/about.html:84 msgid "Submit Bug Report" @@ -10012,7 +10282,7 @@ msgstr "" #: templates/account/base.html:66 templates/navbar.html:17 msgid "InvenTree logo" -msgstr "" +msgstr "Логотип InvenTree" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:9 @@ -10036,30 +10306,30 @@ msgstr "Эта ссылка для подтверждения электронн #: templates/account/login.html:6 templates/account/login.html:17 #: templates/account/login.html:38 templates/socialaccount/login.html:5 msgid "Sign In" -msgstr "" +msgstr "Вход" #: templates/account/login.html:21 msgid "Not a member?" -msgstr "" +msgstr "Не член?" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" -msgstr "" +msgstr "Зарегистрироваться" #: templates/account/login.html:45 msgid "Forgot Password?" -msgstr "" +msgstr "Забыли пароль?" #: templates/account/login.html:53 msgid "or log in with" -msgstr "" +msgstr "или войти с помощью" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:20 msgid "Sign Out" -msgstr "" +msgstr "Выйти" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" @@ -10068,12 +10338,12 @@ msgstr "" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 #: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 msgid "Return to Site" -msgstr "" +msgstr "Вернуться на сайт" #: templates/account/password_reset.html:5 #: templates/account/password_reset.html:12 msgid "Password Reset" -msgstr "" +msgstr "Сброс пароля" #: templates/account/password_reset.html:18 msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." @@ -10089,7 +10359,7 @@ msgstr "" #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" -msgstr "" +msgstr "Неверный Токен" #: templates/account/password_reset_from_key.html:11 #, python-format @@ -10098,7 +10368,7 @@ msgstr "" #: templates/account/password_reset_from_key.html:18 msgid "Change password" -msgstr "" +msgstr "Изменить пароль" #: templates/account/password_reset_from_key.html:22 msgid "Your password is now changed." @@ -10116,7 +10386,7 @@ msgstr "" #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" -msgstr "" +msgstr "Регистрация закрыта" #: templates/account/signup_closed.html:10 msgid "Sign up is currently closed." @@ -10124,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10138,7 +10408,7 @@ msgstr "" #: templates/allauth_2fa/authenticate.html:13 msgid "Authenticate" -msgstr "" +msgstr "Авторизоваться" #: templates/allauth_2fa/backup_tokens.html:6 msgid "Two-Factor Authentication Backup Tokens" @@ -10154,7 +10424,7 @@ msgstr "" #: templates/allauth_2fa/backup_tokens.html:28 msgid "Generate Tokens" -msgstr "" +msgstr "Сгенерировать токены" #: templates/allauth_2fa/remove.html:6 msgid "Disable Two-Factor Authentication" @@ -10162,11 +10432,11 @@ msgstr "" #: templates/allauth_2fa/remove.html:9 msgid "Are you sure?" -msgstr "" +msgstr "Вы уверены?" #: templates/allauth_2fa/remove.html:17 msgid "Disable 2FA" -msgstr "" +msgstr "Отключить 2FA" #: templates/allauth_2fa/setup.html:6 msgid "Setup Two-Factor Authentication" @@ -10190,15 +10460,15 @@ msgstr "" #: templates/allauth_2fa/setup.html:37 msgid "Verify" -msgstr "" +msgstr "Проверить" #: templates/attachment_button.html:4 templates/js/translated/attachment.js:70 msgid "Add Link" -msgstr "" +msgstr "Добавить Ссылку" #: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 msgid "Add Attachment" -msgstr "" +msgstr "Прикрепить файл" #: templates/barcode_data.html:5 msgid "Barcode Identifier" @@ -10253,9 +10523,9 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" -msgstr "" +msgstr "Требуемое кол-во" #: templates/email/build_order_required_stock.html:38 #: templates/email/low_stock_notification.html:30 @@ -10273,7 +10543,7 @@ msgstr "Минимальное количество" #: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" -msgstr "" +msgstr "Нет ответа" #: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" @@ -10281,15 +10551,15 @@ msgstr "" #: templates/js/translated/api.js:232 msgid "Error 400: Bad request" -msgstr "Ошибка 400: Некорректный запрос" +msgstr "" #: templates/js/translated/api.js:233 msgid "API request returned error code 400" -msgstr "API-запрос вернул код ошибки 400" +msgstr "" #: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" -msgstr "Ошибка 401: Авторизация не выполнена" +msgstr "" #: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" @@ -10297,15 +10567,15 @@ msgstr "" #: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" -msgstr "Ошибка 403: Доступ запрещён" +msgstr "" #: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "У вас нет прав доступа к этой функции" +msgstr "" #: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" -msgstr "Ошибка 404: Ресурс не найден" +msgstr "" #: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" @@ -10313,7 +10583,7 @@ msgstr "" #: templates/js/translated/api.js:252 msgid "Error 405: Method Not Allowed" -msgstr "Ошибка 405: Метод не разрешён" +msgstr "" #: templates/js/translated/api.js:253 msgid "HTTP method not allowed at URL" @@ -10321,7 +10591,7 @@ msgstr "" #: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "Ошибка 408: Таймаут" +msgstr "" #: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" @@ -10337,7 +10607,7 @@ msgstr "" #: templates/js/translated/api.js:265 msgid "Unhandled Error Code" -msgstr "Необработанная ошибка" +msgstr "" #: templates/js/translated/api.js:266 msgid "Error code" @@ -10345,7 +10615,7 @@ msgstr "Код ошибки" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" -msgstr "Все выбранные вложения будут удалены" +msgstr "" #: templates/js/translated/attachment.js:129 msgid "Delete Attachments" @@ -10361,19 +10631,19 @@ msgstr "" #: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "Вложение не найдено" +msgstr "" #: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "" +msgstr "Редактировать вложения" #: templates/js/translated/attachment.js:346 msgid "Upload Date" -msgstr "" +msgstr "Дата загрузки" #: templates/js/translated/attachment.js:366 msgid "Edit attachment" -msgstr "" +msgstr "Редактировать вложения" #: templates/js/translated/attachment.js:374 msgid "Delete attachment" @@ -10385,7 +10655,7 @@ msgstr "" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "Введите штрихкод" +msgstr "" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" @@ -10393,11 +10663,11 @@ msgstr "" #: templates/js/translated/barcode.js:138 msgid "Enter optional notes for stock transfer" -msgstr "Введите дополнительные заметки для перевода товара" +msgstr "Добавьте записи для перемещения запасов (необязательно)" #: templates/js/translated/barcode.js:139 msgid "Enter notes" -msgstr "Введите описание" +msgstr "Введите записи" #: templates/js/translated/barcode.js:188 msgid "Server error" @@ -10418,7 +10688,7 @@ msgstr "" #: templates/js/translated/barcode.js:420 templates/navbar.html:114 msgid "Scan Barcode" -msgstr "" +msgstr "Сканировать штрихкод" #: templates/js/translated/barcode.js:458 msgid "No URL in response" @@ -10430,24 +10700,24 @@ msgstr "" #: templates/js/translated/barcode.js:504 msgid "Unlink" -msgstr "" +msgstr "Отсоединить" #: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 msgid "Remove stock item" -msgstr "" +msgstr "Удалить складскую позицию" #: templates/js/translated/barcode.js:610 msgid "Scan Stock Items Into Location" -msgstr "" +msgstr "Сканировать складские позиции в место хранения" #: templates/js/translated/barcode.js:612 msgid "Scan stock item barcode to check in to this location" -msgstr "" +msgstr "Сканировать штрих-код складской позиции и проверить в этом месте хранения" #: templates/js/translated/barcode.js:615 #: templates/js/translated/barcode.js:812 msgid "Check In" -msgstr "" +msgstr "Отметить" #: templates/js/translated/barcode.js:647 msgid "No barcode provided" @@ -10455,19 +10725,19 @@ msgstr "" #: templates/js/translated/barcode.js:687 msgid "Stock Item already scanned" -msgstr "" +msgstr "Складская позиция уже просканирована" #: templates/js/translated/barcode.js:691 msgid "Stock Item already in this location" -msgstr "" +msgstr "Складская позиция уже в этом месте хранения" #: templates/js/translated/barcode.js:698 msgid "Added stock item" -msgstr "" +msgstr "Добавленная складская позиция" #: templates/js/translated/barcode.js:707 msgid "Barcode does not match valid stock item" -msgstr "" +msgstr "Штрих-код не совпадает с допустимыми складскими позициями" #: templates/js/translated/barcode.js:726 msgid "Scan Stock Container Into Location" @@ -10492,15 +10762,15 @@ msgstr "" #: templates/js/translated/bom.js:78 msgid "Create BOM Item" -msgstr "" +msgstr "Создать Элемент BOM" #: templates/js/translated/bom.js:132 msgid "Display row data" -msgstr "" +msgstr "Отображать данные строки" #: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "" +msgstr "Данные строк" #: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 #: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 @@ -10508,15 +10778,15 @@ msgstr "" #: templates/js/translated/purchase_order.js:805 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" -msgstr "" +msgstr "Закрыть" #: templates/js/translated/bom.js:306 msgid "Download BOM Template" -msgstr "Скачать шаблон BOM" +msgstr "" #: templates/js/translated/bom.js:351 msgid "Multi Level BOM" -msgstr "" +msgstr "Многоуровневый БОМ" #: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" @@ -10524,7 +10794,7 @@ msgstr "" #: templates/js/translated/bom.js:357 msgid "Levels" -msgstr "" +msgstr "Уровни" #: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" @@ -10596,7 +10866,7 @@ msgstr "" #: templates/js/translated/bom.js:701 msgid "Add Substitute" -msgstr "" +msgstr "Добавить замену" #: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" @@ -10612,7 +10882,7 @@ msgstr "" #: templates/js/translated/bom.js:826 msgid "Delete items" -msgstr "" +msgstr "Удалить элементы" #: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" @@ -10622,13 +10892,13 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" #: templates/js/translated/bom.js:1014 msgid "Substitutes" -msgstr "" +msgstr "Замены" #: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" @@ -10642,28 +10912,28 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" -msgstr "" +msgstr "Расходник" #: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" @@ -10687,382 +10957,382 @@ msgstr "Удалить элемент BOM" #: templates/js/translated/bom.js:1307 msgid "View BOM" -msgstr "" +msgstr "Просмотр BOM" #: templates/js/translated/bom.js:1391 msgid "No BOM items found" -msgstr "Элементы BOM не найдены" - -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 -msgid "Required Part" msgstr "" +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 +msgid "Required Part" +msgstr "Необходимая деталь" + #: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" -msgstr "Унаследовано от родительского BOM" +msgstr "" #: templates/js/translated/build.js:142 msgid "Edit Build Order" -msgstr "Редактировать заказ на сборку" +msgstr "Редактировать заказ на производство" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" -msgstr "Создать заказ на сборку" +msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" -msgstr "Вы уверены, что хотите отменить эту сборку?" - -#: templates/js/translated/build.js:232 -msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 -msgid "There are incomplete outputs remaining for this build order" -msgstr "Для этого заказа остались незавершенные результаты" +#: templates/js/translated/build.js:237 +msgid "Stock items have been allocated to this build order" +msgstr "Складские позиции были зарезервированы для этого заказа на производство" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:244 +msgid "There are incomplete outputs remaining for this build order" +msgstr "У этого заказа на производство осталась незавершенная продукция" + +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 -msgid "This build order cannot be completed as there are incomplete outputs" -msgstr "" - #: templates/js/translated/build.js:304 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "Этот заказ на производство не может быть завершен, так как имеет незавершенный выход деталей" + +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" -msgstr "Спецификация содержит отслеживаемые детали" +msgstr "BOM содержит отслеживаемые детали" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" -msgstr "" +msgstr "Продукция должна создаваться индивидуально" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" -msgstr "Отслеживаемые детали могут иметь серийные номера" +msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "Введите серийные номера для генерации нескольких выходов одной сборки" +msgstr "Ведите серийные номера для создания нескольких единиц продукции" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" -msgstr "" +msgstr "Создать Выход Продукции" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" -msgstr "" +msgstr "Зарезервировать складские позиции для этой продукции" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" -msgstr "" +msgstr "Отменить резерв этой продукции" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" -msgstr "" +msgstr "Завершить продукцию" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" -msgstr "" +msgstr "Списать продукцию" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" -msgstr "" +msgstr "Удалить продукцию" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" -msgstr "" +msgstr "Вы уверены, что хотите отменить резерв выбранных складских позиций из этого производства?" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" -msgstr "" +msgstr "Отменить резерв складских позиций" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" -msgstr "" +msgstr "Выбрать Продукцию" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" -msgstr "" +msgstr "Как минимум одна единица продукции должна быть выбрана" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" -msgstr "" +msgstr "Выбранная продукция будет отмечена как завершенная" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" -msgstr "" +msgstr "Продукция" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" -msgstr "" +msgstr "Завершить Продукцию" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" -msgstr "" +msgstr "Выбранная продукция будет отмечена как списанная" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" -msgstr "" +msgstr "Списанная продукция отмечена как отклоненная" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" -msgstr "" +msgstr "Зарезервированная складская позиция более не доступна" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" -msgstr "Выработка лома" +msgstr "Списать Продукцию" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" -msgstr "" +msgstr "Выбранная продукция будет удалена" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" -msgstr "" +msgstr "Продукция будет полностью удалена" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" -msgstr "" +msgstr "Зарезервированные складские позиции были возвращены на склад" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" -msgstr "" +msgstr "Удалить Продукцию" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" -msgstr "" +msgstr "Зарезервированное количество" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" -msgstr "" +msgstr "Завершенная продукция" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" -msgstr "" +msgstr "Списанная продукция" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" -msgstr "" - -#: templates/js/translated/build.js:1110 -msgid "build output" -msgstr "" - -#: templates/js/translated/build.js:1111 -msgid "build outputs" -msgstr "" +msgstr "Удаленная продукция" #: templates/js/translated/build.js:1115 +msgid "build output" +msgstr "продукция" + +#: templates/js/translated/build.js:1116 +msgid "build outputs" +msgstr "продукция" + +#: templates/js/translated/build.js:1120 msgid "Build output actions" -msgstr "" +msgstr "Действия с продукцией" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" -msgstr "" +msgstr "Активная продукция не найдена" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" -msgstr "" +msgstr "Зарезервированные Строки" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" -msgstr "" +msgstr "Требуемые тесты" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "" +msgstr "Выбрать детали" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" -msgstr "" +msgstr "Выберите место хранения - источник (оставьте пустым, чтобы взять из всех мест)" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" -msgstr "" +msgstr "Зарезервировать складские позиции для этого заказа на производства" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" -msgstr "" +msgstr "Нет совпадающих складских позиций" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "" +msgstr "Складские позиции будут автоматически зарезервированы на этот заказ на производстве, в соответствии с указанными рекомендациями" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" -msgstr "" +msgstr "Зарезервировать Складские Позиции" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" -msgstr "" +msgstr "Выбрать" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" -msgstr "" +msgstr "Прогресс" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" -msgstr "" +msgstr "Редактировать Резерв" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" -msgstr "" +msgstr "строка производства" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" -msgstr "" +msgstr "позиция производства" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "Отслеживаемая деталь" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" -msgstr "" +msgstr "Количество единиц" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" -msgstr "" +msgstr "Расходник" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" -msgstr "" - -#: templates/js/translated/build.js:2640 -#: templates/js/translated/sales_order.js:2016 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2649 -#: templates/js/translated/sales_order.js:2010 -msgid "Allocate stock" -msgstr "" +msgstr "Отслеживаемый элемент" #: templates/js/translated/build.js:2653 +#: templates/js/translated/sales_order.js:2016 +msgid "Build stock" +msgstr "Запасы производства" + +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "Заказать запасы" + +#: templates/js/translated/build.js:2662 +#: templates/js/translated/sales_order.js:2010 +msgid "Allocate stock" +msgstr "Зарезервировать Остатки" + +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11073,11 +11343,11 @@ msgstr "Добавить производителя" #: templates/js/translated/company.js:111 #: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "Добавить деталь производителя" +msgstr "" #: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "Редактировать деталь производителя" +msgstr "" #: templates/js/translated/company.js:201 #: templates/js/translated/purchase_order.js:93 @@ -11087,11 +11357,11 @@ msgstr "Добавить поставщика" #: templates/js/translated/company.js:243 #: templates/js/translated/purchase_order.js:352 msgid "Add Supplier Part" -msgstr "Добавить деталь поставщика" +msgstr "" #: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" -msgstr "Все выбранные детали поставщика будут удалены" +msgstr "" #: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" @@ -11103,7 +11373,7 @@ msgstr "Добавить новую компанию" #: templates/js/translated/company.js:536 msgid "Parts Supplied" -msgstr "" +msgstr "Поставленные Детали" #: templates/js/translated/company.js:545 msgid "Parts Manufactured" @@ -11111,7 +11381,7 @@ msgstr "" #: templates/js/translated/company.js:560 msgid "No company information found" -msgstr "Информация о компании не найдена" +msgstr "" #: templates/js/translated/company.js:609 msgid "Create New Contact" @@ -11120,7 +11390,7 @@ msgstr "" #: templates/js/translated/company.js:625 #: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "" +msgstr "Изменить контакт" #: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" @@ -11129,11 +11399,11 @@ msgstr "" #: templates/js/translated/company.js:668 #: templates/js/translated/company.js:732 msgid "Role" -msgstr "" +msgstr "Роль" #: templates/js/translated/company.js:676 msgid "Delete Contacts" -msgstr "" +msgstr "Удалить контакты" #: templates/js/translated/company.js:707 msgid "No contacts found" @@ -11141,15 +11411,15 @@ msgstr "" #: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "" +msgstr "Номер телефона" #: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "" +msgstr "Адрес электронной почты" #: templates/js/translated/company.js:752 msgid "Delete Contact" -msgstr "" +msgstr "Удалить Контакт" #: templates/js/translated/company.js:849 msgid "Create New Address" @@ -11158,7 +11428,7 @@ msgstr "" #: templates/js/translated/company.js:864 #: templates/js/translated/company.js:1025 msgid "Edit Address" -msgstr "" +msgstr "Редактировать адрес" #: templates/js/translated/company.js:899 msgid "All selected addresses will be deleted" @@ -11166,7 +11436,7 @@ msgstr "" #: templates/js/translated/company.js:913 msgid "Delete Addresses" -msgstr "" +msgstr "Удалить адрес" #: templates/js/translated/company.js:940 msgid "No addresses found" @@ -11174,23 +11444,23 @@ msgstr "" #: templates/js/translated/company.js:979 msgid "Postal city" -msgstr "" +msgstr "Почтовый индекс" #: templates/js/translated/company.js:985 msgid "State/province" -msgstr "" +msgstr "Регион/Область" #: templates/js/translated/company.js:997 msgid "Courier notes" -msgstr "" +msgstr "Записи Курьера" #: templates/js/translated/company.js:1003 msgid "Internal notes" -msgstr "" +msgstr "Внутренние записи" #: templates/js/translated/company.js:1029 msgid "Delete Address" -msgstr "" +msgstr "Удалить Адрес" #: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" @@ -11206,7 +11476,7 @@ msgstr "" #: templates/js/translated/company.js:1165 msgid "Delete Parameters" -msgstr "Удалить параметры" +msgstr "" #: templates/js/translated/company.js:1181 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 @@ -11223,7 +11493,7 @@ msgstr "" #: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" -msgstr "Информация о детали производителя не найдена" +msgstr "" #: templates/js/translated/company.js:1269 #: templates/js/translated/company.js:1557 templates/js/translated/part.js:798 @@ -11235,11 +11505,11 @@ msgstr "Деталь-шаблон" #: templates/js/translated/company.js:1561 templates/js/translated/part.js:802 #: templates/js/translated/part.js:1214 msgid "Assembled part" -msgstr "" +msgstr "Производимая Деталь" #: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464 msgid "No parameters found" -msgstr "Параметры не найдены" +msgstr "" #: templates/js/translated/company.js:1428 templates/js/translated/part.js:1527 msgid "Edit parameter" @@ -11259,27 +11529,27 @@ msgstr "Удалить параметр" #: templates/js/translated/company.js:1486 msgid "Delete supplier parts" -msgstr "Удалить деталь поставщика" +msgstr "" #: templates/js/translated/company.js:1536 msgid "No supplier parts found" -msgstr "Информация о детали поставщика не найдена" +msgstr "" #: templates/js/translated/company.js:1654 msgid "Base Units" -msgstr "" +msgstr "Базовая Единица" #: templates/js/translated/company.js:1684 msgid "Availability" -msgstr "" +msgstr "Доступность" #: templates/js/translated/company.js:1715 msgid "Edit supplier part" -msgstr "Редактировать деталь поставщика" +msgstr "" #: templates/js/translated/company.js:1716 msgid "Delete supplier part" -msgstr "Удалить деталь поставщика" +msgstr "" #: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 @@ -11289,7 +11559,7 @@ msgstr "" #: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" -msgstr "" +msgstr "Изменить разрыв цен" #: templates/js/translated/company.js:1794 msgid "No price break information found" @@ -11301,7 +11571,7 @@ msgstr "Последнее обновление" #: templates/js/translated/company.js:1830 msgid "Edit price break" -msgstr "" +msgstr "Изменить разрыв цен" #: templates/js/translated/company.js:1831 msgid "Delete price break" @@ -11319,15 +11589,15 @@ msgstr "" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "" +msgstr "Выбрать фильтр" #: templates/js/translated/filters.js:437 msgid "Print Labels" -msgstr "" +msgstr "Печать этикеток" #: templates/js/translated/filters.js:441 msgid "Print Reports" -msgstr "" +msgstr "Распечатать отчеты" #: templates/js/translated/filters.js:453 msgid "Download table data" @@ -11339,7 +11609,7 @@ msgstr "" #: templates/js/translated/filters.js:469 msgid "Add new filter" -msgstr "" +msgstr "Добавить новый фильтр" #: templates/js/translated/filters.js:477 msgid "Clear all filters" @@ -11347,7 +11617,7 @@ msgstr "" #: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "" +msgstr "Создать фильтр" #: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 #: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 @@ -11356,19 +11626,19 @@ msgstr "" #: templates/js/translated/forms.js:376 msgid "Create operation not allowed" -msgstr "Операция создания не разрешена" +msgstr "" #: templates/js/translated/forms.js:391 msgid "Update operation not allowed" -msgstr "Операция обновления не разрешена" +msgstr "" #: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" -msgstr "Операция удаления не разрешена" +msgstr "" #: templates/js/translated/forms.js:419 msgid "View operation not allowed" -msgstr "Операция просмотра не разрешена" +msgstr "" #: templates/js/translated/forms.js:796 msgid "Keep this form open" @@ -11376,7 +11646,7 @@ msgstr "" #: templates/js/translated/forms.js:899 msgid "Enter a valid number" -msgstr "Введите корректный номер" +msgstr "" #: templates/js/translated/forms.js:1469 templates/modals.html:19 #: templates/modals.html:43 @@ -11385,35 +11655,35 @@ msgstr "Форма содержит ошибки" #: templates/js/translated/forms.js:1967 msgid "No results found" -msgstr "Не найдено" +msgstr "Результаты не найдены" #: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239 msgid "Searching" -msgstr "" +msgstr "Поиск" #: templates/js/translated/forms.js:2485 msgid "Clear input" -msgstr "" +msgstr "Очистить ввод" #: templates/js/translated/forms.js:3071 msgid "File Column" -msgstr "" +msgstr "Столбец Файла" #: templates/js/translated/forms.js:3071 msgid "Field Name" -msgstr "" +msgstr "Имя Поля" #: templates/js/translated/forms.js:3083 msgid "Select Columns" -msgstr "" +msgstr "Выбрать столбцы" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "" +msgstr "ДА" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "" +msgstr "НЕТ" #: templates/js/translated/helpers.js:93 msgid "True" @@ -11427,13 +11697,9 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" -msgstr "" +msgstr "Выбрать элементы" #: templates/js/translated/label.js:54 msgid "No items selected for printing" @@ -11449,23 +11715,23 @@ msgstr "" #: templates/js/translated/label.js:97 msgid "selected" -msgstr "" +msgstr "выбрано" #: templates/js/translated/label.js:133 msgid "Printing Options" -msgstr "" +msgstr "Параметры печати" #: templates/js/translated/label.js:148 msgid "Print label" -msgstr "" +msgstr "Печать Этикетки" #: templates/js/translated/label.js:148 msgid "Print labels" -msgstr "" +msgstr "Печать этикеток" #: templates/js/translated/label.js:149 msgid "Print" -msgstr "" +msgstr "Печать" #: templates/js/translated/label.js:155 msgid "Select label template" @@ -11473,7 +11739,7 @@ msgstr "" #: templates/js/translated/label.js:168 msgid "Select plugin" -msgstr "" +msgstr "Выбрать плагин" #: templates/js/translated/label.js:187 msgid "Labels sent to printer" @@ -11492,7 +11758,7 @@ msgstr "Подтвердить" #: templates/js/translated/modals.js:156 msgid "Form Title" -msgstr "" +msgstr "Заголовок Формы" #: templates/js/translated/modals.js:445 msgid "Waiting for server..." @@ -11504,11 +11770,11 @@ msgstr "" #: templates/js/translated/modals.js:682 msgid "Accept" -msgstr "" +msgstr "Принять" #: templates/js/translated/modals.js:740 msgid "Loading Data" -msgstr "" +msgstr "Загрузка данных" #: templates/js/translated/modals.js:1011 msgid "Invalid response from server" @@ -11520,7 +11786,7 @@ msgstr "" #: templates/js/translated/modals.js:1023 msgid "Error posting form data" -msgstr "Ошибка отправки данных формы" +msgstr "" #: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" @@ -11528,41 +11794,41 @@ msgstr "" #: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" -msgstr "Ошибка 400: Некорректный запрос" +msgstr "" #: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" -msgstr "Сервер вернул код ошибки 400" +msgstr "" #: templates/js/translated/modals.js:1159 msgid "Error requesting form data" -msgstr "Ошибка запроса данных формы" +msgstr "" #: templates/js/translated/news.js:33 msgid "No news found" -msgstr "" +msgstr "Новости не найдены" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 #: templates/js/translated/part.js:1604 msgid "ID" -msgstr "Идентификатор" +msgstr "Код" #: templates/js/translated/notification.js:52 msgid "Age" -msgstr "" +msgstr "Возраст" #: templates/js/translated/notification.js:65 msgid "Notification" -msgstr "" +msgstr "Уведомление" #: templates/js/translated/notification.js:224 msgid "Mark as unread" -msgstr "" +msgstr "Пометить как непрочитанное" #: templates/js/translated/notification.js:228 msgid "Mark as read" -msgstr "" +msgstr "Пометить как прочитанное" #: templates/js/translated/notification.js:254 msgid "No unread notifications" @@ -11578,19 +11844,19 @@ msgstr "" #: templates/js/translated/order.js:126 msgid "Export Order" -msgstr "" +msgstr "Экспорт заказа" #: templates/js/translated/order.js:241 msgid "Duplicate Line" -msgstr "" +msgstr "Дублировать Строку" #: templates/js/translated/order.js:255 msgid "Edit Line" -msgstr "" +msgstr "Редактировать Строку" #: templates/js/translated/order.js:268 msgid "Delete Line" -msgstr "" +msgstr "Удалить Строку" #: templates/js/translated/order.js:281 #: templates/js/translated/purchase_order.js:1987 @@ -11599,15 +11865,15 @@ msgstr "" #: templates/js/translated/order.js:369 msgid "Duplicate line" -msgstr "" +msgstr "Дублировать Строку" #: templates/js/translated/order.js:370 msgid "Edit line" -msgstr "" +msgstr "Редактировать строку" #: templates/js/translated/order.js:374 msgid "Delete line" -msgstr "" +msgstr "Удалить строку" #: templates/js/translated/part.js:90 msgid "Part Attributes" @@ -11615,31 +11881,31 @@ msgstr "Атрибуты детали" #: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "Настройки создания детали" +msgstr "" #: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "Настройки дублирования детали" +msgstr "" #: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "Добавить категорию" +msgstr "Добавить категорию детали" #: templates/js/translated/part.js:308 msgid "Parent part category" -msgstr "Родительская категория" +msgstr "" #: templates/js/translated/part.js:332 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" -msgstr "Значок (необязательно) — просмотрите все доступные значки на" +msgstr "" #: templates/js/translated/part.js:352 msgid "Create Part Category" -msgstr "Создать категорию деталей" +msgstr "" #: templates/js/translated/part.js:355 msgid "Create new category after this one" -msgstr "Создать новую категорию после этой" +msgstr "" #: templates/js/translated/part.js:356 msgid "Part category created" @@ -11647,11 +11913,11 @@ msgstr "" #: templates/js/translated/part.js:370 msgid "Edit Part Category" -msgstr "Редактировать категорию" +msgstr "" #: templates/js/translated/part.js:383 msgid "Are you sure you want to delete this part category?" -msgstr "Вы уверены, что хотите удалить эту категорию?" +msgstr "" #: templates/js/translated/part.js:388 msgid "Move to parent category" @@ -11659,7 +11925,7 @@ msgstr "" #: templates/js/translated/part.js:397 msgid "Delete Part Category" -msgstr "Удалить категорию" +msgstr "" #: templates/js/translated/part.js:401 msgid "Action for parts in this category" @@ -11671,31 +11937,31 @@ msgstr "" #: templates/js/translated/part.js:430 msgid "Create Part" -msgstr "Создать деталь" +msgstr "Создать Деталь" #: templates/js/translated/part.js:432 msgid "Create another part after this one" -msgstr "Создать ещё одну деталь после этой" +msgstr "" #: templates/js/translated/part.js:433 msgid "Part created successfully" -msgstr "Деталь создана успешно" +msgstr "" #: templates/js/translated/part.js:461 msgid "Edit Part" -msgstr "" +msgstr "Редактировать Деталь" #: templates/js/translated/part.js:463 msgid "Part edited" -msgstr "" +msgstr "Деталь изменена" #: templates/js/translated/part.js:474 msgid "Create Part Variant" -msgstr "Создать разновидность детали" +msgstr "" #: templates/js/translated/part.js:531 msgid "Active Part" -msgstr "" +msgstr "Активная Деталь" #: templates/js/translated/part.js:532 msgid "Part cannot be deleted as it is currently active" @@ -11707,7 +11973,7 @@ msgstr "" #: templates/js/translated/part.js:548 msgid "Any stock items for this part will be deleted" -msgstr "" +msgstr "Любые складские позиции для этой запчасти будут удалены" #: templates/js/translated/part.js:549 msgid "This part will be removed from any Bills of Material" @@ -11719,23 +11985,23 @@ msgstr "" #: templates/js/translated/part.js:557 msgid "Delete Part" -msgstr "" +msgstr "Удалить Деталь" #: templates/js/translated/part.js:593 msgid "You are subscribed to notifications for this item" -msgstr "Вы подписаны на уведомления для данного элемента" +msgstr "" #: templates/js/translated/part.js:595 msgid "You have subscribed to notifications for this item" -msgstr "Вы подписались на уведомления для данного элемента" +msgstr "" #: templates/js/translated/part.js:600 msgid "Subscribe to notifications for this item" -msgstr "Включить уведомления для данного элемента" +msgstr "" #: templates/js/translated/part.js:602 msgid "You have unsubscribed to notifications for this item" -msgstr "Вы отписались от уведомлений для данного элемента" +msgstr "" #: templates/js/translated/part.js:619 msgid "Validating the BOM will mark each line item as valid" @@ -11756,7 +12022,7 @@ msgstr "" #: templates/js/translated/part.js:685 #: templates/js/translated/table_filters.js:743 msgid "Low stock" -msgstr "" +msgstr "Низкий запас" #: templates/js/translated/part.js:688 msgid "No stock available" @@ -11764,23 +12030,23 @@ msgstr "" #: templates/js/translated/part.js:748 msgid "Demand" -msgstr "" +msgstr "Требуется" #: templates/js/translated/part.js:771 msgid "Unit" -msgstr "" +msgstr "Ед. Изм." #: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 msgid "Virtual part" -msgstr "" +msgstr "Виртуальная Деталь" #: templates/js/translated/part.js:806 msgid "Subscribed part" -msgstr "" +msgstr "Деталь с подпиской" #: templates/js/translated/part.js:810 msgid "Salable part" -msgstr "" +msgstr "Продаваемая деталь" #: templates/js/translated/part.js:889 msgid "Schedule generation of a new stocktake report." @@ -11812,11 +12078,11 @@ msgstr "" #: templates/js/translated/part.js:1281 msgid "No variants found" -msgstr "Разновидности не найдены" +msgstr "" #: templates/js/translated/part.js:1599 msgid "No part parameter templates found" -msgstr "Шаблоны параметров детали не найдены" +msgstr "" #: templates/js/translated/part.js:1662 msgid "Edit Part Parameter Template" @@ -11833,7 +12099,7 @@ msgstr "" #: templates/js/translated/part.js:1716 #: templates/js/translated/purchase_order.js:1651 msgid "No purchase orders found" -msgstr "Заказов на закупку не найдено" +msgstr "" #: templates/js/translated/part.js:1860 #: templates/js/translated/purchase_order.js:2150 @@ -11865,15 +12131,19 @@ msgstr "" #: templates/js/translated/part.js:2205 msgid "Set Part Category" -msgstr "Укажите категорию" +msgstr "" #: templates/js/translated/part.js:2235 msgid "Set category" -msgstr "Укажите категорию" +msgstr "Указать категорию" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "деталь" #: templates/js/translated/part.js:2288 msgid "parts" -msgstr "" +msgstr "детали" #: templates/js/translated/part.js:2384 msgid "No category" @@ -11882,11 +12152,11 @@ msgstr "Нет категории" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2640 msgid "Display as list" -msgstr "Список" +msgstr "Отобразить списком" #: templates/js/translated/part.js:2547 msgid "Display as grid" -msgstr "Таблица" +msgstr "Отобразить сеткой" #: templates/js/translated/part.js:2645 msgid "No subcategories found" @@ -11894,7 +12164,7 @@ msgstr "" #: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "Дерево" +msgstr "Отобразить древом" #: templates/js/translated/part.js:2761 msgid "Load Subcategories" @@ -11902,15 +12172,15 @@ msgstr "" #: templates/js/translated/part.js:2777 msgid "Subscribed category" -msgstr "" +msgstr "Категория с подпиской" #: templates/js/translated/part.js:2854 msgid "No test templates matching query" -msgstr "Нет тестовых шаблонов, соответствующих запросу" +msgstr "" #: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436 msgid "Edit test result" -msgstr "" +msgstr "Редактировать результаты тестирования" #: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437 #: templates/js/translated/stock.js:1699 @@ -11939,7 +12209,7 @@ msgstr "" #: templates/js/translated/part.js:3028 msgid "Speculative" -msgstr "" +msgstr "Приблизительный" #: templates/js/translated/part.js:3078 msgid "No scheduling information available for this part" @@ -11955,7 +12225,7 @@ msgstr "" #: templates/js/translated/part.js:3196 msgid "Maximum Quantity" -msgstr "" +msgstr "Максимальное количество" #: templates/js/translated/part.js:3241 msgid "Minimum Stock Level" @@ -11963,7 +12233,7 @@ msgstr "" #: templates/js/translated/plugin.js:46 msgid "No plugins found" -msgstr "" +msgstr "Плагины не найдены" #: templates/js/translated/plugin.js:58 msgid "This plugin is no longer installed" @@ -11979,11 +12249,11 @@ msgstr "" #: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:186 msgid "Disable Plugin" -msgstr "" +msgstr "Отключить плагин" #: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:186 msgid "Enable Plugin" -msgstr "" +msgstr "Включить плагин" #: templates/js/translated/plugin.js:158 msgid "The Plugin was installed" @@ -11999,15 +12269,15 @@ msgstr "" #: templates/js/translated/plugin.js:189 msgid "Enable" -msgstr "" +msgstr "Включить" #: templates/js/translated/plugin.js:189 msgid "Disable" -msgstr "" +msgstr "Отключено" #: templates/js/translated/plugin.js:203 msgid "Plugin updated" -msgstr "" +msgstr "Плагин обновлен" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" @@ -12047,7 +12317,7 @@ msgstr "" #: templates/js/translated/pricing.js:1045 msgid "Variant Part" -msgstr "" +msgstr "Вариант детали" #: templates/js/translated/purchase_order.js:169 msgid "Select purchase order to duplicate" @@ -12071,7 +12341,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:206 msgid "Edit Purchase Order" -msgstr "Редактировать заказ на закупку" +msgstr "" #: templates/js/translated/purchase_order.js:223 msgid "Duplication Options" @@ -12123,7 +12393,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:631 msgid "At least one purchaseable part must be selected" -msgstr "Должна быть выбрана хотя бы одна приобретаемая деталь." +msgstr "" #: templates/js/translated/purchase_order.js:656 msgid "Quantity to order" @@ -12168,19 +12438,19 @@ msgstr "" #: templates/js/translated/purchase_order.js:1187 msgid "Stock Status" -msgstr "" +msgstr "Статус Запасов" #: templates/js/translated/purchase_order.js:1201 msgid "Add barcode" -msgstr "" +msgstr "Добавить штрихкод" #: templates/js/translated/purchase_order.js:1202 msgid "Remove barcode" -msgstr "" +msgstr "Удалить штрихкод" #: templates/js/translated/purchase_order.js:1205 msgid "Specify location" -msgstr "" +msgstr "Выберите место хранения" #: templates/js/translated/purchase_order.js:1213 msgid "Add batch code" @@ -12192,11 +12462,11 @@ msgstr "" #: templates/js/translated/purchase_order.js:1276 msgid "Serials" -msgstr "" +msgstr "Серийные номера" #: templates/js/translated/purchase_order.js:1301 msgid "Order Code" -msgstr "" +msgstr "Код Заказа" #: templates/js/translated/purchase_order.js:1303 msgid "Quantity to Receive" @@ -12217,7 +12487,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:1399 msgid "Scan barcode on incoming item (must not match any existing stock items)" -msgstr "" +msgstr "Сканировать штрихкод входящего элемента (не должен совпадать с любой существующей складской позицией)" #: templates/js/translated/purchase_order.js:1413 msgid "Invalid barcode data" @@ -12228,14 +12498,14 @@ msgstr "" #: templates/js/translated/sales_order.js:774 #: templates/js/translated/sales_order.js:998 msgid "Order is overdue" -msgstr "" +msgstr "Заказ просрочен" #: templates/js/translated/purchase_order.js:1744 #: templates/js/translated/return_order.js:354 #: templates/js/translated/sales_order.js:851 #: templates/js/translated/sales_order.js:1011 msgid "Items" -msgstr "" +msgstr "Элементы" #: templates/js/translated/purchase_order.js:1840 msgid "All selected Line items will be deleted" @@ -12255,13 +12525,13 @@ msgstr "" #: templates/js/translated/return_order.js:669 #: templates/js/translated/sales_order.js:2083 msgid "Edit Line Item" -msgstr "" +msgstr "Редактировать Позицию" #: templates/js/translated/purchase_order.js:1939 #: templates/js/translated/return_order.js:682 #: templates/js/translated/sales_order.js:2094 msgid "Delete Line Item" -msgstr "" +msgstr "Удалить позицию" #: templates/js/translated/purchase_order.js:2221 #: templates/js/translated/sales_order.js:2024 @@ -12272,21 +12542,21 @@ msgstr "" #: templates/js/translated/return_order.js:801 #: templates/js/translated/sales_order.js:2025 msgid "Edit line item" -msgstr "" +msgstr "Редактировать Позицию" #: templates/js/translated/purchase_order.js:2223 #: templates/js/translated/return_order.js:805 #: templates/js/translated/sales_order.js:2031 msgid "Delete line item" -msgstr "" +msgstr "Удалить позицию" #: templates/js/translated/report.js:63 msgid "items selected" -msgstr "" +msgstr "элементы выбраны" #: templates/js/translated/report.js:71 msgid "Select Report Template" -msgstr "Выберите шаблон отчёта" +msgstr "" #: templates/js/translated/report.js:86 msgid "Select Test Report Template" @@ -12303,7 +12573,7 @@ msgstr "" #: templates/js/translated/return_order.js:60 #: templates/js/translated/sales_order.js:86 msgid "Add Customer" -msgstr "" +msgstr "Добавить Клиента" #: templates/js/translated/return_order.js:134 msgid "Create Return Order" @@ -12336,14 +12606,14 @@ msgstr "" #: templates/js/translated/return_order.js:300 #: templates/js/translated/sales_order.js:788 msgid "Invalid Customer" -msgstr "" +msgstr "Некорректный клиент" #: templates/js/translated/return_order.js:562 msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12361,11 +12631,11 @@ msgstr "" #: templates/js/translated/sales_order.js:291 msgid "No stock items have been allocated to this shipment" -msgstr "" +msgstr "Нет зарезервированных складских позиций для этого отправления" #: templates/js/translated/sales_order.js:296 msgid "The following stock items will be shipped" -msgstr "" +msgstr "Следующие складские позиции будут отправлены" #: templates/js/translated/sales_order.js:336 msgid "Complete Shipment" @@ -12381,7 +12651,7 @@ msgstr "" #: templates/js/translated/sales_order.js:420 msgid "No stock items have been allocated to pending shipments" -msgstr "" +msgstr "Нет складских позиций зарезервированных для ожидающих отправлений" #: templates/js/translated/sales_order.js:430 msgid "Complete Shipments" @@ -12389,7 +12659,7 @@ msgstr "" #: templates/js/translated/sales_order.js:452 msgid "Skip" -msgstr "" +msgstr "Пропустить" #: templates/js/translated/sales_order.js:513 msgid "This order has line items which have not been completed." @@ -12409,7 +12679,7 @@ msgstr "" #: templates/js/translated/sales_order.js:564 msgid "Cancelling this order means that the order will no longer be editable." -msgstr "Отмена этого заказа означает, что заказ нельзя будет редактировать." +msgstr "" #: templates/js/translated/sales_order.js:618 msgid "Create New Shipment" @@ -12417,11 +12687,11 @@ msgstr "" #: templates/js/translated/sales_order.js:728 msgid "No sales orders found" -msgstr "Заказы на продажу не найдены" +msgstr "" #: templates/js/translated/sales_order.js:908 msgid "Edit shipment" -msgstr "" +msgstr "Редактировать отправление" #: templates/js/translated/sales_order.js:911 msgid "Complete shipment" @@ -12429,15 +12699,15 @@ msgstr "" #: templates/js/translated/sales_order.js:916 msgid "Delete shipment" -msgstr "" +msgstr "Удалить отправление" #: templates/js/translated/sales_order.js:933 msgid "Edit Shipment" -msgstr "" +msgstr "Редактировать отправление" #: templates/js/translated/sales_order.js:948 msgid "Delete Shipment" -msgstr "" +msgstr "Удалить Отправление" #: templates/js/translated/sales_order.js:981 msgid "No matching shipments found" @@ -12450,27 +12720,27 @@ msgstr "" #: templates/js/translated/sales_order.js:1030 #: templates/js/translated/sales_order.js:1529 msgid "Not shipped" -msgstr "" +msgstr "Не отправленно" #: templates/js/translated/sales_order.js:1048 msgid "Tracking" -msgstr "" +msgstr "Отслеживание" #: templates/js/translated/sales_order.js:1052 msgid "Invoice" -msgstr "" +msgstr "Счет" #: templates/js/translated/sales_order.js:1219 msgid "Add Shipment" -msgstr "" +msgstr "Создать Отправление" #: templates/js/translated/sales_order.js:1270 msgid "Confirm stock allocation" -msgstr "Подтвердите выделение запасов" +msgstr "" #: templates/js/translated/sales_order.js:1271 msgid "Allocate Stock Items to Sales Order" -msgstr "" +msgstr "Зарезервировать складские позиции для заказа на продажу" #: templates/js/translated/sales_order.js:1477 msgid "No sales order allocations found" @@ -12505,12 +12775,12 @@ msgstr "" #: templates/js/translated/sales_order.js:2012 msgid "Purchase stock" -msgstr "" +msgstr "Закупить запасы" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" -msgstr "" +msgstr "Рассчитать стоимость" #: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been shipped" @@ -12524,13 +12794,13 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" #: templates/js/translated/search.js:270 msgid "No results" -msgstr "" +msgstr "Нет результатов" #: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" @@ -12538,11 +12808,11 @@ msgstr "Введите запрос для поиска" #: templates/js/translated/search.js:342 msgid "result" -msgstr "" +msgstr "результат" #: templates/js/translated/search.js:342 msgid "results" -msgstr "" +msgstr "результаты" #: templates/js/translated/search.js:352 msgid "Minimize results" @@ -12550,11 +12820,11 @@ msgstr "" #: templates/js/translated/search.js:355 msgid "Remove results" -msgstr "" +msgstr "Удалить результат" #: templates/js/translated/stock.js:98 msgid "Serialize Stock Item" -msgstr "" +msgstr "Сериализировать складскую позицию" #: templates/js/translated/stock.js:129 msgid "Confirm Stock Serialization" @@ -12590,7 +12860,7 @@ msgstr "" #: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" -msgstr "Вы уверены, что хотите удалить место хранения?" +msgstr "" #: templates/js/translated/stock.js:241 msgid "Move to parent stock location" @@ -12602,7 +12872,7 @@ msgstr "" #: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" -msgstr "" +msgstr "Действия со складской позиции в этом месте хранения" #: templates/js/translated/stock.js:259 msgid "Action for sub-locations" @@ -12618,31 +12888,31 @@ msgstr "" #: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" -msgstr "Введите начальное количество для этого товара в наличии" +msgstr "Введите начальное количество для этой складской позиции" #: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "Введите серийные номера для нового склада (или оставьте пустым)" +msgstr "" #: templates/js/translated/stock.js:439 msgid "Stock item duplicated" -msgstr "" +msgstr "Складская позиция дублирована" #: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" -msgstr "" +msgstr "Дублировать складскую позицию" #: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" -msgstr "" +msgstr "Вы уверены, что хотите удалить эту складскую позицию?" #: templates/js/translated/stock.js:480 msgid "Delete Stock Item" -msgstr "" +msgstr "Удалить складскую позицию" #: templates/js/translated/stock.js:501 msgid "Edit Stock Item" -msgstr "" +msgstr "Редактировать складскую позицию" #: templates/js/translated/stock.js:543 msgid "Create another item after this one" @@ -12650,11 +12920,11 @@ msgstr "" #: templates/js/translated/stock.js:555 msgid "Created new stock item" -msgstr "" +msgstr "Создана новая складская позиция" #: templates/js/translated/stock.js:568 msgid "Created multiple stock items" -msgstr "Создано несколько единиц хранения" +msgstr "Создано несколько складских позиций" #: templates/js/translated/stock.js:593 msgid "Find Serial Number" @@ -12662,11 +12932,11 @@ msgstr "" #: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "Введите серийный номер" +msgstr "" #: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "Введите серийный номер" +msgstr "" #: templates/js/translated/stock.js:634 msgid "No matching serial number" @@ -12686,63 +12956,63 @@ msgstr "" #: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" -msgstr "Предупреждение: Операция объединения не может быть отменена" +msgstr "" #: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" -msgstr "Следующие данные будут потеряны в процессе объединения" +msgstr "Некоторые данные будут потеряны при слиянии складских позиций" #: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" -msgstr "История складских перемещений будет удалена для объединённых элементов" +msgstr "" #: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" -msgstr "Информация о деталях поставщика будет удалена для объединённых элементов" +msgstr "" #: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" -msgstr "" +msgstr "Подтвердить слияние складских позиций" #: templates/js/translated/stock.js:929 msgid "Merge Stock Items" -msgstr "" +msgstr "Объединить складские позиции" #: templates/js/translated/stock.js:1024 msgid "Transfer Stock" -msgstr "" +msgstr "Переместить запасы" #: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "" +msgstr "Переместить" #: templates/js/translated/stock.js:1031 msgid "Count Stock" -msgstr "" +msgstr "Установить запасы" #: templates/js/translated/stock.js:1032 msgid "Count" -msgstr "" +msgstr "Количество" #: templates/js/translated/stock.js:1036 msgid "Remove Stock" -msgstr "" +msgstr "Удалить запасы" #: templates/js/translated/stock.js:1037 msgid "Take" -msgstr "" +msgstr "Взять" #: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "" +msgstr "Добавить Запасы" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" -msgstr "" +msgstr "Добавить" #: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "" +msgstr "Удалить запасы" #: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" @@ -12754,11 +13024,11 @@ msgstr "" #: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" -msgstr "" +msgstr "Выбрать складские позиции" #: templates/js/translated/stock.js:1178 msgid "Select at least one available stock item" -msgstr "" +msgstr "Выбрать как минимум одну складскую позицию" #: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" @@ -12766,23 +13036,23 @@ msgstr "" #: templates/js/translated/stock.js:1360 msgid "PASS" -msgstr "" +msgstr "ПРОШЕЛ" #: templates/js/translated/stock.js:1362 msgid "FAIL" -msgstr "" +msgstr "ПРОВАЛЕН" #: templates/js/translated/stock.js:1367 msgid "NO RESULT" -msgstr "" +msgstr "НЕТ РЕЗУЛЬТАТА" #: templates/js/translated/stock.js:1429 msgid "Pass test" -msgstr "" +msgstr "Тест пройден" #: templates/js/translated/stock.js:1432 msgid "Add test result" -msgstr "" +msgstr "Добавить Результат Тестирования" #: templates/js/translated/stock.js:1456 msgid "No test results found" @@ -12790,7 +13060,7 @@ msgstr "" #: templates/js/translated/stock.js:1520 msgid "Test Date" -msgstr "" +msgstr "Данные Тестирования" #: templates/js/translated/stock.js:1682 msgid "Edit Test Result" @@ -12802,11 +13072,11 @@ msgstr "" #: templates/js/translated/stock.js:1736 msgid "In production" -msgstr "" +msgstr "В производстве" #: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" -msgstr "" +msgstr "Установленные складские позиции" #: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" @@ -12818,19 +13088,19 @@ msgstr "" #: templates/js/translated/stock.js:1810 msgid "Change stock status" -msgstr "" +msgstr "Изменить статус запасов" #: templates/js/translated/stock.js:1819 msgid "Merge stock" -msgstr "" +msgstr "Объединить Запасы" #: templates/js/translated/stock.js:1868 msgid "Delete stock" -msgstr "" +msgstr "Удалить запасы" #: templates/js/translated/stock.js:1923 msgid "stock items" -msgstr "" +msgstr "складские позиции" #: templates/js/translated/stock.js:1928 msgid "Scan to location" @@ -12838,7 +13108,7 @@ msgstr "" #: templates/js/translated/stock.js:1939 msgid "Stock Actions" -msgstr "" +msgstr "Действия с Запасами" #: templates/js/translated/stock.js:1983 msgid "Load installed items" @@ -12846,60 +13116,60 @@ msgstr "" #: templates/js/translated/stock.js:2061 msgid "Stock item is in production" -msgstr "" +msgstr "Складская позиция в производстве" #: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" -msgstr "" +msgstr "Складская позиция зарезервирована заказом на продажу" #: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" -msgstr "" +msgstr "Складская позиция была назначена покупателю" #: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" -msgstr "" +msgstr "Сериализированная складская позиция была зарезервирована " #: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" -msgstr "" +msgstr "Складские позиции были полностью зарезервированы" #: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" -msgstr "" +msgstr "Складские позиции были частично зарезервированы" #: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" -msgstr "" +msgstr "Складская позиция была установлена в другую деталь" #: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" -msgstr "" +msgstr "Складская позиция была поглощена заказом на продажу" #: templates/js/translated/stock.js:2085 msgid "Stock item has expired" -msgstr "" +msgstr "Складская позиция была просрочена" #: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" -msgstr "" +msgstr "Складская позиция будет просрочена в скором времени" #: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" -msgstr "" +msgstr "Складская позиция была отклонена" #: templates/js/translated/stock.js:2094 msgid "Stock item is lost" -msgstr "" +msgstr "Складская позиция была утеряна" #: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" -msgstr "" +msgstr "Складская позиция была уничтожена" #: templates/js/translated/stock.js:2100 #: templates/js/translated/table_filters.js:350 msgid "Depleted" -msgstr "" +msgstr "Истощен" #: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" @@ -12907,15 +13177,15 @@ msgstr "" #: templates/js/translated/stock.js:2312 msgid "Stock Value" -msgstr "" +msgstr "Кол-во Запаса" #: templates/js/translated/stock.js:2440 msgid "No stock items matching query" -msgstr "" +msgstr "Нет складских позиций соответствующих запросу" #: templates/js/translated/stock.js:2544 msgid "stock locations" -msgstr "" +msgstr "места хранения" #: templates/js/translated/stock.js:2699 msgid "Load Sublocations" @@ -12923,11 +13193,11 @@ msgstr "" #: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "" +msgstr "Подробности" #: templates/js/translated/stock.js:2821 msgid "No changes" -msgstr "" +msgstr "Нет изменений" #: templates/js/translated/stock.js:2833 msgid "Part information unavailable" @@ -12959,15 +13229,15 @@ msgstr "" #: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" -msgstr "" +msgstr "Складская позиция не существует" #: templates/js/translated/stock.js:2976 msgid "Added" -msgstr "" +msgstr "Добавлено" #: templates/js/translated/stock.js:2984 msgid "Removed" -msgstr "" +msgstr "Удалено" #: templates/js/translated/stock.js:3056 msgid "No installed items" @@ -12975,35 +13245,35 @@ msgstr "" #: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" -msgstr "" +msgstr "Снять складскую позицию" #: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" -msgstr "" +msgstr "Выберите складскую позицию для съема" #: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" -msgstr "" +msgstr "Установить другую складскую позицию в эту деталь" #: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" -msgstr "" +msgstr "Складские позиции могут быть установлены, только если отвечают следующим критериям" #: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" -msgstr "" +msgstr "Складская позиция ссылается на деталь, чья спецификация является этой складской позицией" #: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" -msgstr "" +msgstr "Складская позиция сейчас доступна на складе" #: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" -msgstr "" +msgstr "Складская позиция не установлена в другую деталь" #: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" -msgstr "" +msgstr "Складская позиция отслеживается либо по коду партии, либо серийному номеру" #: templates/js/translated/stock.js:3205 msgid "Select part to install" @@ -13011,15 +13281,15 @@ msgstr "" #: templates/js/translated/stock.js:3268 msgid "Select one or more stock items" -msgstr "" +msgstr "Выберите одну или более складских позиций" #: templates/js/translated/stock.js:3281 msgid "Selected stock items" -msgstr "" +msgstr "Выбранные складские позиции" #: templates/js/translated/stock.js:3285 msgid "Change Stock Status" -msgstr "" +msgstr "Изменить статус запасов" #: templates/js/translated/table_filters.js:74 msgid "Has project code" @@ -13030,21 +13300,21 @@ msgstr "" #: templates/js/translated/table_filters.js:613 #: templates/js/translated/table_filters.js:654 msgid "Order status" -msgstr "" +msgstr "Статус заказа" #: templates/js/translated/table_filters.js:94 #: templates/js/translated/table_filters.js:618 #: templates/js/translated/table_filters.js:644 #: templates/js/translated/table_filters.js:659 msgid "Outstanding" -msgstr "" +msgstr "Невыполненный" #: templates/js/translated/table_filters.js:102 #: templates/js/translated/table_filters.js:524 #: templates/js/translated/table_filters.js:626 #: templates/js/translated/table_filters.js:667 msgid "Assigned to me" -msgstr "" +msgstr "Назначено мне" #: templates/js/translated/table_filters.js:158 msgid "Trackable Part" @@ -13052,7 +13322,7 @@ msgstr "Отслеживаемая деталь" #: templates/js/translated/table_filters.js:162 msgid "Assembled Part" -msgstr "" +msgstr "Производимая Деталь" #: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" @@ -13065,7 +13335,7 @@ msgstr "" #: templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:775 msgid "Has Pricing" -msgstr "" +msgstr "Имеет цену" #: templates/js/translated/table_filters.js:234 #: templates/js/translated/table_filters.js:345 @@ -13089,12 +13359,12 @@ msgstr "" #: templates/js/translated/table_filters.js:287 #: templates/js/translated/table_filters.js:755 msgid "Subscribed" -msgstr "" +msgstr "Подписан" #: templates/js/translated/table_filters.js:298 #: templates/js/translated/table_filters.js:380 msgid "Is Serialized" -msgstr "" +msgstr "Сериализовано" #: templates/js/translated/table_filters.js:301 #: templates/js/translated/table_filters.js:387 @@ -13121,7 +13391,7 @@ msgstr "" #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "" +msgstr "Серийный номер" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 @@ -13131,7 +13401,7 @@ msgstr "Код партии" #: templates/js/translated/table_filters.js:325 #: templates/js/translated/table_filters.js:696 msgid "Active parts" -msgstr "" +msgstr "Активная Деталь" #: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" @@ -13143,7 +13413,7 @@ msgstr "" #: templates/js/translated/table_filters.js:335 msgid "Is allocated" -msgstr "" +msgstr "Зарезервировано" #: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" @@ -13159,16 +13429,12 @@ msgstr "" #: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" -msgstr "" +msgstr "Показать просроченные складские позиции" #: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13179,11 +13445,11 @@ msgstr "" #: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" -msgstr "" +msgstr "Включить складские позиции для разновидностей деталей" #: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" -msgstr "" +msgstr "Показать складские позиции, установленные в другие детали" #: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" @@ -13192,15 +13458,15 @@ msgstr "" #: templates/js/translated/table_filters.js:396 #: templates/js/translated/table_filters.js:397 msgid "Stock status" -msgstr "" +msgstr "Статус Запасов" #: templates/js/translated/table_filters.js:400 msgid "Has batch code" -msgstr "" +msgstr "Имеет код партии" #: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" -msgstr "" +msgstr "Складская позиция отслеживается либо по коду партии, либо серийному номеру" #: templates/js/translated/table_filters.js:414 msgid "Has purchase price" @@ -13208,7 +13474,7 @@ msgstr "" #: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" -msgstr "" +msgstr "Показать складские позиции, у которых установлена закупочная цена" #: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" @@ -13220,7 +13486,7 @@ msgstr "" #: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" -msgstr "" +msgstr "Показать просроченные складские позиции" #: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" @@ -13228,7 +13494,7 @@ msgstr "" #: templates/js/translated/table_filters.js:456 msgid "Test Passed" -msgstr "" +msgstr "Тест Пройден" #: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" @@ -13236,7 +13502,7 @@ msgstr "" #: templates/js/translated/table_filters.js:511 msgid "Build status" -msgstr "Статус сборки" +msgstr "Статус Производства" #: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" @@ -13248,12 +13514,12 @@ msgstr "" #: templates/js/translated/table_filters.js:721 msgid "Available stock" -msgstr "" +msgstr "Доступный запас" #: templates/js/translated/table_filters.js:729 #: templates/js/translated/table_filters.js:825 msgid "Has Units" -msgstr "" +msgstr "Имеет Ед. Изм." #: templates/js/translated/table_filters.js:730 msgid "Part has defined units" @@ -13261,7 +13527,7 @@ msgstr "" #: templates/js/translated/table_filters.js:734 msgid "Has IPN" -msgstr "" +msgstr "Имеет IPN" #: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" @@ -13269,11 +13535,11 @@ msgstr "" #: templates/js/translated/table_filters.js:739 msgid "In stock" -msgstr "" +msgstr "В наличии" #: templates/js/translated/table_filters.js:747 msgid "Purchasable" -msgstr "" +msgstr "Можно купить" #: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" @@ -13281,7 +13547,7 @@ msgstr "" #: templates/js/translated/table_filters.js:821 msgid "Has Choices" -msgstr "" +msgstr "Имеет Варианты" #: templates/js/translated/tables.js:92 msgid "Display calendar view" @@ -13297,7 +13563,7 @@ msgstr "" #: templates/js/translated/tables.js:130 msgid "Expand all rows" -msgstr "" +msgstr "Развернуть все строки" #: templates/js/translated/tables.js:136 msgid "Collapse all rows" @@ -13317,31 +13583,31 @@ msgstr "Загрузка данных" #: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "строк на странице" +msgstr "строк на страницу" #: templates/js/translated/tables.js:537 msgid "Showing all rows" -msgstr "Показываются все строки" +msgstr "" #: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "Показано от" +msgstr "Отображается" #: templates/js/translated/tables.js:539 msgid "to" -msgstr "до" +msgstr "в" #: templates/js/translated/tables.js:539 msgid "of" -msgstr "из" +msgstr "" #: templates/js/translated/tables.js:539 msgid "rows" -msgstr "строк" +msgstr "строки" #: templates/js/translated/tables.js:546 msgid "No matching results" -msgstr "Ничего не найдено" +msgstr "" #: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" @@ -13349,15 +13615,15 @@ msgstr "" #: templates/js/translated/tables.js:555 msgid "Toggle" -msgstr "" +msgstr "Переключить" #: templates/js/translated/tables.js:558 msgid "Columns" -msgstr "" +msgstr "Столбцы" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "" +msgstr "Все" #: templates/navbar.html:45 msgid "Buy" @@ -13377,64 +13643,64 @@ msgstr "" #: templates/navbar.html:144 users/models.py:188 msgid "Admin" -msgstr "" +msgstr "Админ" #: templates/navbar.html:148 msgid "Logout" -msgstr "" +msgstr "Выход" #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" -msgstr "" +msgstr "Сохранить" #: templates/notifications.html:9 msgid "Show all notifications and history" -msgstr "" +msgstr "Показать все уведомления и историю" #: templates/qr_code.html:11 msgid "QR data not provided" -msgstr "" +msgstr "QR-данные не представлены" #: templates/registration/logged_out.html:7 msgid "You were logged out successfully." -msgstr "" +msgstr "Вы успешно вышли из системы." #: templates/registration/logged_out.html:9 msgid "Log in again" -msgstr "" +msgstr "Войти снова" #: templates/search.html:9 msgid "Show full search results" -msgstr "" +msgstr "Показать полные результаты поиска" #: templates/search.html:12 msgid "Clear search" -msgstr "" +msgstr "Очистить поиск" #: templates/search.html:15 msgid "Close search menu" -msgstr "" +msgstr "Закрыть меню поиска" #: templates/socialaccount/authentication_error.html:5 msgid "Social Network Login Failure" -msgstr "" +msgstr "Ошибка входа в социальную сеть" #: templates/socialaccount/authentication_error.html:8 msgid "Account Login Failure" -msgstr "" +msgstr "Ошибка входа в аккаунт" #: templates/socialaccount/authentication_error.html:11 msgid "An error occurred while attempting to login via your social network account." -msgstr "" +msgstr "Произошла ошибка при попытке входа через социальную сеть." #: templates/socialaccount/authentication_error.html:13 msgid "Contact your system administrator for further information." -msgstr "" +msgstr "Свяжитесь с вашим системным администратором для получения дополнительной информации." #: templates/socialaccount/login.html:13 #, python-format msgid "Connect %(provider)s" -msgstr "" +msgstr "Подключить %(provider)s" #: templates/socialaccount/login.html:15 #, python-format @@ -13453,7 +13719,7 @@ msgstr "" #: templates/socialaccount/login.html:24 msgid "Continue" -msgstr "" +msgstr "Продолжить" #: templates/socialaccount/login.html:29 msgid "Invalid SSO Provider" @@ -13463,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13479,7 +13750,7 @@ msgstr "" #: templates/stats.html:13 msgid "Instance Name" -msgstr "" +msgstr "Имя инстанса" #: templates/stats.html:18 msgid "Database" @@ -13491,7 +13762,7 @@ msgstr "" #: templates/stats.html:33 msgid "Docker Mode" -msgstr "" +msgstr "Режим Docker" #: templates/stats.html:34 msgid "Server is deployed using docker" @@ -13499,7 +13770,7 @@ msgstr "" #: templates/stats.html:39 msgid "Plugin Support" -msgstr "" +msgstr "Поддержка плагина" #: templates/stats.html:43 msgid "Plugin support enabled" @@ -13511,15 +13782,15 @@ msgstr "" #: templates/stats.html:52 msgid "Server status" -msgstr "" +msgstr "Статус сервера" #: templates/stats.html:55 msgid "Healthy" -msgstr "" +msgstr "Исправен" #: templates/stats.html:57 msgid "Issues detected" -msgstr "" +msgstr "Обнаруженные проблемы" #: templates/stats.html:64 msgid "Background Worker" @@ -13539,35 +13810,35 @@ msgstr "Электронная почта не настроена" #: templates/yesnolabel.html:4 msgid "Yes" -msgstr "" +msgstr "Да" #: templates/yesnolabel.html:6 msgid "No" -msgstr "" - -#: users/admin.py:103 -msgid "Users" -msgstr "" +msgstr "Нет" #: users/admin.py:104 +msgid "Users" +msgstr "Пользователи" + +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" -msgstr "" +msgstr "Персональная информация" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "Права доступа" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" -msgstr "" +msgstr "Важные даты" #: users/authentication.py:29 users/models.py:127 msgid "Token has been revoked" @@ -13579,15 +13850,15 @@ msgstr "" #: users/models.py:70 msgid "API Token" -msgstr "" +msgstr "API Token" #: users/models.py:71 msgid "API Tokens" -msgstr "" +msgstr "Токены API" #: users/models.py:107 msgid "Token Name" -msgstr "" +msgstr "Название токена" #: users/models.py:108 msgid "Custom token name" @@ -13599,7 +13870,7 @@ msgstr "" #: users/models.py:122 msgid "Last Seen" -msgstr "" +msgstr "Последнее Посещение" #: users/models.py:123 msgid "Last time the token was used" @@ -13607,37 +13878,37 @@ msgstr "" #: users/models.py:127 msgid "Revoked" -msgstr "" +msgstr "Отозван" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "Права доступа" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" -msgstr "" +msgstr "Группа" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "Вид" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "Разрешение на просмотр элементов" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "Разрешение на добавление элементов" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" -msgstr "" +msgstr "Изменить" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Разрешение на редактирование элементов" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "Разрешение на удаление элементов" diff --git a/InvenTree/locale/sk/LC_MESSAGES/django.po b/InvenTree/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 0000000000..55c8a7c091 --- /dev/null +++ b/InvenTree/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,13914 @@ +msgid "" +msgstr "" +"Project-Id-Version: inventree\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" +"Last-Translator: \n" +"Language-Team: Slovak\n" +"Language: sk_SK\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: inventree\n" +"X-Crowdin-Project-ID: 452300\n" +"X-Crowdin-Language: sk\n" +"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 154\n" + +#: InvenTree/api.py:197 +msgid "API endpoint not found" +msgstr "" + +#: InvenTree/api.py:461 +msgid "User does not have permission to view this model" +msgstr "" + +#: InvenTree/conversion.py:95 +msgid "No value provided" +msgstr "" + +#: InvenTree/conversion.py:128 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "" + +#: InvenTree/conversion.py:130 +msgid "Invalid quantity supplied" +msgstr "" + +#: InvenTree/conversion.py:144 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "" + +#: InvenTree/exceptions.py:109 +msgid "Error details can be found in the admin panel" +msgstr "" + +#: InvenTree/fields.py:140 +msgid "Enter date" +msgstr "" + +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 +#: order/templates/order/return_order_sidebar.html:9 +#: order/templates/order/so_sidebar.html:17 part/admin.py:59 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 +#: report/templates/report/inventree_build_order_base.html:172 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1080 +#: templates/js/translated/purchase_order.js:2197 +#: templates/js/translated/return_order.js:776 +#: templates/js/translated/sales_order.js:1067 +#: templates/js/translated/sales_order.js:1982 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 +msgid "Notes" +msgstr "" + +#: InvenTree/format.py:164 +#, python-brace-format +msgid "Value '{name}' does not appear in pattern format" +msgstr "" + +#: InvenTree/format.py:175 +msgid "Provided value does not match required pattern: " +msgstr "" + +#: InvenTree/forms.py:128 +msgid "Enter password" +msgstr "" + +#: InvenTree/forms.py:129 +msgid "Enter new password" +msgstr "" + +#: InvenTree/forms.py:138 +msgid "Confirm password" +msgstr "" + +#: InvenTree/forms.py:139 +msgid "Confirm new password" +msgstr "" + +#: InvenTree/forms.py:143 +msgid "Old password" +msgstr "" + +#: InvenTree/forms.py:182 +msgid "Email (again)" +msgstr "" + +#: InvenTree/forms.py:186 +msgid "Email address confirmation" +msgstr "" + +#: InvenTree/forms.py:209 +msgid "You must type the same email each time." +msgstr "" + +#: InvenTree/forms.py:253 InvenTree/forms.py:261 +msgid "The provided primary email address is not valid." +msgstr "" + +#: InvenTree/forms.py:268 +msgid "The provided email domain is not approved." +msgstr "" + +#: InvenTree/forms.py:395 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 +msgid "Invalid quantity provided" +msgstr "" + +#: InvenTree/helpers.py:513 +msgid "Empty serial number string" +msgstr "" + +#: InvenTree/helpers.py:542 +msgid "Duplicate serial" +msgstr "" + +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 +#, python-brace-format +msgid "Invalid group range: {group}" +msgstr "" + +#: InvenTree/helpers.py:605 +#, python-brace-format +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 +#, python-brace-format +msgid "Invalid group sequence: {group}" +msgstr "" + +#: InvenTree/helpers.py:671 +msgid "No serial numbers found" +msgstr "" + +#: InvenTree/helpers.py:676 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:794 +msgid "Remove HTML tags from this value" +msgstr "" + +#: InvenTree/helpers_model.py:150 +msgid "Connection error" +msgstr "" + +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +msgid "Server responded with invalid status code" +msgstr "" + +#: InvenTree/helpers_model.py:158 +msgid "Exception occurred" +msgstr "" + +#: InvenTree/helpers_model.py:168 +msgid "Server responded with invalid Content-Length value" +msgstr "" + +#: InvenTree/helpers_model.py:171 +msgid "Image size is too large" +msgstr "" + +#: InvenTree/helpers_model.py:183 +msgid "Image download exceeded maximum size" +msgstr "" + +#: InvenTree/helpers_model.py:188 +msgid "Remote server returned empty response" +msgstr "" + +#: InvenTree/helpers_model.py:196 +msgid "Supplied URL is not a valid image file" +msgstr "" + +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 +msgid "Metadata must be a python dict object" +msgstr "" + +#: InvenTree/models.py:168 +msgid "Plugin Metadata" +msgstr "" + +#: InvenTree/models.py:169 +msgid "JSON metadata field, for use by external plugins" +msgstr "" + +#: InvenTree/models.py:399 +msgid "Improperly formatted pattern" +msgstr "" + +#: InvenTree/models.py:406 +msgid "Unknown format key specified" +msgstr "" + +#: InvenTree/models.py:412 +msgid "Missing required format key" +msgstr "" + +#: InvenTree/models.py:423 +msgid "Reference field cannot be empty" +msgstr "" + +#: InvenTree/models.py:431 +msgid "Reference must match required pattern" +msgstr "" + +#: InvenTree/models.py:463 +msgid "Reference number is too large" +msgstr "" + +#: InvenTree/models.py:537 +msgid "Missing file" +msgstr "" + +#: InvenTree/models.py:538 +msgid "Missing external link" +msgstr "" + +#: InvenTree/models.py:559 stock/models.py:2362 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:326 +msgid "Attachment" +msgstr "" + +#: InvenTree/models.py:560 +msgid "Select file to attach" +msgstr "" + +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_base.html:164 +#: stock/admin.py:225 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2037 +#: templates/js/translated/purchase_order.js:2201 +#: templates/js/translated/return_order.js:780 +#: templates/js/translated/sales_order.js:1056 +#: templates/js/translated/sales_order.js:1987 +msgid "Link" +msgstr "" + +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 +msgid "Link to external URL" +msgstr "" + +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 +msgid "Comment" +msgstr "" + +#: InvenTree/models.py:576 +msgid "File comment" +msgstr "" + +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 +#: report/templates/report/inventree_test_report_base.html:105 +#: templates/js/translated/stock.js:3007 users/models.py:100 +msgid "User" +msgstr "" + +#: InvenTree/models.py:589 +msgid "upload date" +msgstr "" + +#: InvenTree/models.py:611 +msgid "Filename must not be empty" +msgstr "" + +#: InvenTree/models.py:622 +msgid "Invalid attachment directory" +msgstr "" + +#: InvenTree/models.py:652 +#, python-brace-format +msgid "Filename contains illegal character '{c}'" +msgstr "" + +#: InvenTree/models.py:655 +msgid "Filename missing extension" +msgstr "" + +#: InvenTree/models.py:664 +msgid "Attachment with this filename already exists" +msgstr "" + +#: InvenTree/models.py:671 +msgid "Error renaming file" +msgstr "" + +#: InvenTree/models.py:847 +msgid "Duplicate names cannot exist under the same parent" +msgstr "" + +#: InvenTree/models.py:864 +msgid "Invalid choice" +msgstr "" + +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 +#: templates/InvenTree/settings/notifications.html:17 +#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin_settings.html:22 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 +#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2687 +msgid "Name" +msgstr "" + +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 +#: company/templates/company/company_base.html:71 +#: company/templates/company/manufacturer_part.html:75 +#: company/templates/company/supplier_part.html:107 label/models.py:122 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 +#: report/templates/report/inventree_build_order_base.html:117 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 +#: templates/InvenTree/settings/notifications.html:19 +#: templates/InvenTree/settings/plugin_settings.html:27 +#: templates/InvenTree/settings/settings_staff_js.html:170 +#: templates/InvenTree/settings/settings_staff_js.html:451 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 +#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 +#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2873 +#: templates/js/translated/plugin.js:80 +#: templates/js/translated/purchase_order.js:1703 +#: templates/js/translated/purchase_order.js:1846 +#: templates/js/translated/purchase_order.js:2019 +#: templates/js/translated/return_order.js:314 +#: templates/js/translated/sales_order.js:802 +#: templates/js/translated/sales_order.js:1812 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 +msgid "Description" +msgstr "" + +#: InvenTree/models.py:901 stock/models.py:82 +msgid "Description (optional)" +msgstr "" + +#: InvenTree/models.py:910 +msgid "parent" +msgstr "" + +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 +#: templates/js/translated/stock.js:2728 +msgid "Path" +msgstr "" + +#: InvenTree/models.py:1022 +msgid "Markdown notes (optional)" +msgstr "" + +#: InvenTree/models.py:1051 +msgid "Barcode Data" +msgstr "" + +#: InvenTree/models.py:1052 +msgid "Third party barcode data" +msgstr "" + +#: InvenTree/models.py:1058 +msgid "Barcode Hash" +msgstr "" + +#: InvenTree/models.py:1059 +msgid "Unique hash of barcode data" +msgstr "" + +#: InvenTree/models.py:1112 +msgid "Existing barcode found" +msgstr "" + +#: InvenTree/models.py:1155 +msgid "Server Error" +msgstr "" + +#: InvenTree/models.py:1156 +msgid "An error has been logged by the server." +msgstr "" + +#: InvenTree/serializers.py:63 part/models.py:4115 +msgid "Must be a valid number" +msgstr "" + +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 +#: templates/InvenTree/settings/settings_staff_js.html:44 +#: templates/currency_data.html:5 +msgid "Currency" +msgstr "" + +#: InvenTree/serializers.py:103 +msgid "Select currency from available options" +msgstr "" + +#: InvenTree/serializers.py:437 +msgid "You do not have permission to change this user role." +msgstr "" + +#: InvenTree/serializers.py:449 +msgid "Only superusers can create new users" +msgstr "" + +#: InvenTree/serializers.py:466 +msgid "Your account has been created." +msgstr "" + +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" +msgstr "" + +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 +msgid "Filename" +msgstr "" + +#: InvenTree/serializers.py:570 +msgid "Invalid value" +msgstr "" + +#: InvenTree/serializers.py:590 +msgid "Data File" +msgstr "" + +#: InvenTree/serializers.py:591 +msgid "Select data file for upload" +msgstr "" + +#: InvenTree/serializers.py:608 +msgid "Unsupported file type" +msgstr "" + +#: InvenTree/serializers.py:614 +msgid "File is too large" +msgstr "" + +#: InvenTree/serializers.py:635 +msgid "No columns found in file" +msgstr "" + +#: InvenTree/serializers.py:638 +msgid "No data rows found in file" +msgstr "" + +#: InvenTree/serializers.py:751 +msgid "No data rows provided" +msgstr "" + +#: InvenTree/serializers.py:754 +msgid "No data columns supplied" +msgstr "" + +#: InvenTree/serializers.py:821 +#, python-brace-format +msgid "Missing required column: '{name}'" +msgstr "" + +#: InvenTree/serializers.py:830 +#, python-brace-format +msgid "Duplicate column: '{col}'" +msgstr "" + +#: InvenTree/serializers.py:853 +msgid "Remote Image" +msgstr "" + +#: InvenTree/serializers.py:854 +msgid "URL of remote image file" +msgstr "" + +#: InvenTree/serializers.py:870 +msgid "Downloading images from remote URL is not enabled" +msgstr "" + +#: InvenTree/status.py:66 part/serializers.py:1090 +msgid "Background worker check failed" +msgstr "" + +#: InvenTree/status.py:70 +msgid "Email backend not configured" +msgstr "" + +#: InvenTree/status.py:73 +msgid "InvenTree system health checks failed" +msgstr "" + +#: InvenTree/status_codes.py:12 InvenTree/status_codes.py:37 +#: InvenTree/status_codes.py:148 InvenTree/status_codes.py:164 +#: InvenTree/status_codes.py:182 generic/states/tests.py:17 +#: templates/js/translated/table_filters.js:594 +msgid "Pending" +msgstr "" + +#: InvenTree/status_codes.py:13 generic/states/tests.py:18 +msgid "Placed" +msgstr "" + +#: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 +#: InvenTree/status_codes.py:169 generic/states/tests.py:19 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 +msgid "Complete" +msgstr "" + +#: InvenTree/status_codes.py:15 InvenTree/status_codes.py:44 +#: InvenTree/status_codes.py:150 InvenTree/status_codes.py:170 +msgid "Cancelled" +msgstr "" + +#: InvenTree/status_codes.py:16 InvenTree/status_codes.py:45 +#: InvenTree/status_codes.py:67 +msgid "Lost" +msgstr "" + +#: InvenTree/status_codes.py:17 InvenTree/status_codes.py:46 +#: InvenTree/status_codes.py:73 +msgid "Returned" +msgstr "" + +#: InvenTree/status_codes.py:40 InvenTree/status_codes.py:167 +msgid "In Progress" +msgstr "" + +#: InvenTree/status_codes.py:43 order/models.py:1536 +#: templates/js/translated/sales_order.js:1523 +#: templates/js/translated/sales_order.js:1644 +#: templates/js/translated/sales_order.js:1957 +msgid "Shipped" +msgstr "" + +#: InvenTree/status_codes.py:62 +msgid "OK" +msgstr "" + +#: InvenTree/status_codes.py:63 +msgid "Attention needed" +msgstr "" + +#: InvenTree/status_codes.py:64 +msgid "Damaged" +msgstr "" + +#: InvenTree/status_codes.py:65 +msgid "Destroyed" +msgstr "" + +#: InvenTree/status_codes.py:66 +msgid "Rejected" +msgstr "" + +#: InvenTree/status_codes.py:70 +msgid "Quarantined" +msgstr "" + +#: InvenTree/status_codes.py:91 +msgid "Legacy stock tracking entry" +msgstr "" + +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 +msgid "Stock item created" +msgstr "" + +#: InvenTree/status_codes.py:96 +msgid "Edited stock item" +msgstr "" + +#: InvenTree/status_codes.py:97 +msgid "Assigned serial number" +msgstr "" + +#: InvenTree/status_codes.py:100 +msgid "Stock counted" +msgstr "" + +#: InvenTree/status_codes.py:101 +msgid "Stock manually added" +msgstr "" + +#: InvenTree/status_codes.py:102 +msgid "Stock manually removed" +msgstr "" + +#: InvenTree/status_codes.py:105 +msgid "Location changed" +msgstr "" + +#: InvenTree/status_codes.py:106 +msgid "Stock updated" +msgstr "" + +#: InvenTree/status_codes.py:109 +msgid "Installed into assembly" +msgstr "" + +#: InvenTree/status_codes.py:110 +msgid "Removed from assembly" +msgstr "" + +#: InvenTree/status_codes.py:112 +msgid "Installed component item" +msgstr "" + +#: InvenTree/status_codes.py:113 +msgid "Removed component item" +msgstr "" + +#: InvenTree/status_codes.py:116 +msgid "Split from parent item" +msgstr "" + +#: InvenTree/status_codes.py:117 +msgid "Split child item" +msgstr "" + +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 +msgid "Merged stock items" +msgstr "" + +#: InvenTree/status_codes.py:123 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:126 +msgid "Build order output created" +msgstr "" + +#: InvenTree/status_codes.py:127 +msgid "Build order output completed" +msgstr "" + +#: InvenTree/status_codes.py:128 +msgid "Build order output rejected" +msgstr "" + +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 +msgid "Consumed by build order" +msgstr "" + +#: InvenTree/status_codes.py:132 +msgid "Shipped against Sales Order" +msgstr "" + +#: InvenTree/status_codes.py:135 +msgid "Received against Purchase Order" +msgstr "" + +#: InvenTree/status_codes.py:138 +msgid "Returned against Return Order" +msgstr "" + +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 +msgid "Sent to customer" +msgstr "" + +#: InvenTree/status_codes.py:142 +msgid "Returned from customer" +msgstr "" + +#: InvenTree/status_codes.py:149 +msgid "Production" +msgstr "" + +#: InvenTree/status_codes.py:185 +msgid "Return" +msgstr "" + +#: InvenTree/status_codes.py:188 +msgid "Repair" +msgstr "" + +#: InvenTree/status_codes.py:191 +msgid "Replace" +msgstr "" + +#: InvenTree/status_codes.py:194 +msgid "Refund" +msgstr "" + +#: InvenTree/status_codes.py:197 +msgid "Reject" +msgstr "" + +#: InvenTree/templatetags/inventree_extras.py:177 +msgid "Unknown database" +msgstr "" + +#: InvenTree/validators.py:31 InvenTree/validators.py:33 +msgid "Invalid physical unit" +msgstr "" + +#: InvenTree/validators.py:39 +msgid "Not a valid currency code" +msgstr "" + +#: InvenTree/validators.py:121 InvenTree/validators.py:137 +msgid "Overage value must not be negative" +msgstr "" + +#: InvenTree/validators.py:139 +msgid "Overage must not exceed 100%" +msgstr "" + +#: InvenTree/validators.py:145 +msgid "Invalid value for overage" +msgstr "" + +#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23 +msgid "Edit User Information" +msgstr "" + +#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20 +msgid "Set Password" +msgstr "" + +#: InvenTree/views.py:434 +msgid "Password fields must match" +msgstr "" + +#: InvenTree/views.py:442 +msgid "Wrong password provided" +msgstr "" + +#: InvenTree/views.py:650 templates/navbar.html:160 +msgid "System Information" +msgstr "" + +#: InvenTree/views.py:657 templates/navbar.html:171 +msgid "About InvenTree" +msgstr "" + +#: build/api.py:237 +msgid "Build must be cancelled before it can be deleted" +msgstr "" + +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2528 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 +#: templates/js/translated/sales_order.js:1929 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:885 +#: company/templates/company/supplier_part.html:114 +#: templates/email/build_order_required_stock.html:19 +#: templates/email/low_stock_notification.html:17 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 +#: templates/js/translated/part.js:699 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:73 build/templates/build/build_base.html:9 +#: build/templates/build/build_base.html:27 +#: report/templates/report/inventree_build_order_base.html:105 +#: templates/email/build_order_completed.html:16 +#: templates/email/overdue_build_order.html:15 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 +msgid "Build Order" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:13 +#: build/templates/build/index.html:8 build/templates/build/index.html:12 +#: order/templates/order/sales_order_detail.html:111 +#: order/templates/order/so_sidebar.html:13 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 +#: templates/InvenTree/search.html:141 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:194 +msgid "Build Orders" +msgstr "" + +#: build/models.py:115 +msgid "Invalid choice for parent build" +msgstr "" + +#: build/models.py:126 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:170 +msgid "Build Order Reference" +msgstr "" + +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 +#: report/templates/report/inventree_bill_of_materials_report.html:139 +#: report/templates/report/inventree_po_report_base.html:28 +#: report/templates/report/inventree_return_order_report_base.html:26 +#: report/templates/report/inventree_so_report_base.html:28 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 +#: templates/js/translated/pricing.js:386 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/return_order.js:729 +#: templates/js/translated/sales_order.js:1818 +msgid "Reference" +msgstr "" + +#: build/models.py:182 +msgid "Brief description of the build (optional)" +msgstr "" + +#: build/models.py:190 build/templates/build/build_base.html:183 +#: build/templates/build/detail.html:87 +msgid "Parent Build" +msgstr "" + +#: build/models.py:191 +msgid "BuildOrder to which this build is allocated" +msgstr "" + +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 +#: part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 +#: part/templates/part/upload_bom.html:52 +#: report/templates/report/inventree_bill_of_materials_report.html:110 +#: report/templates/report/inventree_bill_of_materials_report.html:137 +#: report/templates/report/inventree_build_order_base.html:109 +#: report/templates/report/inventree_po_report_base.html:27 +#: report/templates/report/inventree_return_order_report_base.html:24 +#: report/templates/report/inventree_slr_report.html:102 +#: report/templates/report/inventree_so_report_base.html:27 +#: stock/serializers.py:200 stock/serializers.py:610 +#: templates/InvenTree/search.html:82 +#: templates/email/build_order_completed.html:17 +#: templates/email/build_order_required_stock.html:17 +#: templates/email/low_stock_notification.html:15 +#: templates/email/overdue_build_order.html:16 +#: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1845 +#: templates/js/translated/purchase_order.js:2004 +#: templates/js/translated/return_order.js:539 +#: templates/js/translated/return_order.js:710 +#: templates/js/translated/sales_order.js:300 +#: templates/js/translated/sales_order.js:1197 +#: templates/js/translated/sales_order.js:1598 +#: templates/js/translated/sales_order.js:1796 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 +msgid "Part" +msgstr "" + +#: build/models.py:204 +msgid "Select part to build" +msgstr "" + +#: build/models.py:209 +msgid "Sales Order Reference" +msgstr "" + +#: build/models.py:213 +msgid "SalesOrder to which this build is allocated" +msgstr "" + +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 +#: templates/js/translated/sales_order.js:1185 +msgid "Source Location" +msgstr "" + +#: build/models.py:222 +msgid "Select location to take stock from for this build (leave blank to take from any stock location)" +msgstr "" + +#: build/models.py:227 +msgid "Destination Location" +msgstr "" + +#: build/models.py:231 +msgid "Select location where the completed items will be stored" +msgstr "" + +#: build/models.py:235 +msgid "Build Quantity" +msgstr "" + +#: build/models.py:238 +msgid "Number of stock items to build" +msgstr "" + +#: build/models.py:242 +msgid "Completed items" +msgstr "" + +#: build/models.py:244 +msgid "Number of stock items which have been completed" +msgstr "" + +#: build/models.py:248 +msgid "Build Status" +msgstr "" + +#: build/models.py:252 +msgid "Build status code" +msgstr "" + +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 +#: templates/js/translated/purchase_order.js:1125 +msgid "Batch Code" +msgstr "" + +#: build/models.py:265 build/serializers.py:280 +msgid "Batch code for this build output" +msgstr "" + +#: build/models.py:268 order/models.py:291 part/models.py:1074 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:339 +#: templates/js/translated/sales_order.js:827 +msgid "Creation Date" +msgstr "" + +#: build/models.py:272 +msgid "Target completion date" +msgstr "" + +#: build/models.py:273 +msgid "Target date for build completion. Build will be overdue after this date." +msgstr "" + +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 +msgid "Completion Date" +msgstr "" + +#: build/models.py:282 +msgid "completed by" +msgstr "" + +#: build/models.py:290 templates/js/translated/build.js:2203 +msgid "Issued by" +msgstr "" + +#: build/models.py:291 +msgid "User who issued this build order" +msgstr "" + +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 +#: order/templates/order/return_order_base.html:188 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 +#: part/templates/part/part_base.html:390 +#: report/templates/report/inventree_build_order_base.html:158 +#: templates/InvenTree/settings/settings_staff_js.html:150 +#: templates/js/translated/build.js:2215 +#: templates/js/translated/purchase_order.js:1760 +#: templates/js/translated/return_order.js:359 +#: templates/js/translated/table_filters.js:527 +msgid "Responsible" +msgstr "" + +#: build/models.py:300 +msgid "User or group responsible for this build order" +msgstr "" + +#: build/models.py:305 build/templates/build/detail.html:108 +#: company/templates/company/manufacturer_part.html:107 +#: company/templates/company/supplier_part.html:194 +#: order/templates/order/order_base.html:167 +#: order/templates/order/return_order_base.html:145 +#: order/templates/order/sales_order_base.html:180 +#: part/templates/part/part_base.html:383 stock/models.py:817 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 +msgid "External Link" +msgstr "" + +#: build/models.py:310 +msgid "Build Priority" +msgstr "" + +#: build/models.py:313 +msgid "Priority of this build order" +msgstr "" + +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 +#: templates/js/translated/purchase_order.js:1707 +#: templates/js/translated/return_order.js:318 +#: templates/js/translated/sales_order.js:806 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:321 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:556 +#, python-brace-format +msgid "Build order {build} has been completed" +msgstr "" + +#: build/models.py:562 +msgid "A build order has been completed" +msgstr "" + +#: build/models.py:780 build/models.py:855 +msgid "No build output specified" +msgstr "" + +#: build/models.py:783 +msgid "Build output is already completed" +msgstr "" + +#: build/models.py:786 +msgid "Build output does not match Build Order" +msgstr "" + +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 +msgid "Quantity must be greater than zero" +msgstr "" + +#: build/models.py:864 build/serializers.py:227 +msgid "Quantity cannot be greater than the output quantity" +msgstr "" + +#: build/models.py:1278 +msgid "Build object" +msgstr "" + +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 +#: part/templates/part/part_pricing.html:16 +#: part/templates/part/upload_bom.html:53 +#: report/templates/report/inventree_bill_of_materials_report.html:138 +#: report/templates/report/inventree_build_order_base.html:113 +#: report/templates/report/inventree_po_report_base.html:29 +#: report/templates/report/inventree_slr_report.html:104 +#: report/templates/report/inventree_so_report_base.html:29 +#: report/templates/report/inventree_test_report_base.html:90 +#: report/templates/report/inventree_test_report_base.html:170 +#: stock/admin.py:160 stock/serializers.py:389 +#: stock/templates/stock/item_base.html:287 +#: stock/templates/stock/item_base.html:295 +#: stock/templates/stock/item_base.html:342 +#: templates/email/build_order_completed.html:18 +#: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3310 +#: templates/js/translated/pricing.js:381 +#: templates/js/translated/pricing.js:474 +#: templates/js/translated/pricing.js:522 +#: templates/js/translated/pricing.js:616 +#: templates/js/translated/purchase_order.js:763 +#: templates/js/translated/purchase_order.js:1849 +#: templates/js/translated/purchase_order.js:2068 +#: templates/js/translated/sales_order.js:317 +#: templates/js/translated/sales_order.js:1199 +#: templates/js/translated/sales_order.js:1518 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1698 +#: templates/js/translated/sales_order.js:1824 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 +msgid "Quantity" +msgstr "" + +#: build/models.py:1293 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1373 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1382 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1392 order/models.py:1837 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1398 order/models.py:1840 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1404 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1465 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:194 +#: templates/js/translated/build.js:1740 +#: templates/js/translated/sales_order.js:301 +#: templates/js/translated/sales_order.js:1198 +#: templates/js/translated/sales_order.js:1499 +#: templates/js/translated/sales_order.js:1504 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1692 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1538 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1551 +msgid "Stock quantity to allocate to build" +msgstr "" + +#: build/models.py:1559 +msgid "Install into" +msgstr "" + +#: build/models.py:1560 +msgid "Destination stock item" +msgstr "" + +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 +msgid "Build Output" +msgstr "" + +#: build/serializers.py:171 +msgid "Build output does not match the parent build" +msgstr "" + +#: build/serializers.py:175 +msgid "Output part does not match BuildOrder part" +msgstr "" + +#: build/serializers.py:179 +msgid "This build output has already been completed" +msgstr "" + +#: build/serializers.py:190 +msgid "This build output is not fully allocated" +msgstr "" + +#: build/serializers.py:210 build/serializers.py:247 +msgid "Enter quantity for build output" +msgstr "" + +#: build/serializers.py:268 +msgid "Integer quantity required for trackable parts" +msgstr "" + +#: build/serializers.py:271 +msgid "Integer quantity required, as the bill of materials contains trackable parts" +msgstr "" + +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 +msgid "Serial Numbers" +msgstr "" + +#: build/serializers.py:287 +msgid "Enter serial numbers for build outputs" +msgstr "" + +#: build/serializers.py:300 +msgid "Auto Allocate Serial Numbers" +msgstr "" + +#: build/serializers.py:301 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "" + +#: build/serializers.py:336 stock/api.py:950 +msgid "The following serial numbers already exist or are invalid" +msgstr "" + +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 +msgid "A list of build outputs must be provided" +msgstr "" + +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 +#: stock/templates/stock/item_base.html:394 +#: templates/js/translated/barcode.js:547 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 +#: templates/js/translated/purchase_order.js:1174 +#: templates/js/translated/purchase_order.js:1264 +#: templates/js/translated/sales_order.js:1511 +#: templates/js/translated/sales_order.js:1619 +#: templates/js/translated/sales_order.js:1627 +#: templates/js/translated/sales_order.js:1706 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 +msgid "Location" +msgstr "" + +#: build/serializers.py:426 +msgid "Stock location for scrapped outputs" +msgstr "" + +#: build/serializers.py:432 +msgid "Discard Allocations" +msgstr "" + +#: build/serializers.py:433 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "" + +#: build/serializers.py:438 +msgid "Reason for scrapping build output(s)" +msgstr "" + +#: build/serializers.py:498 +msgid "Location for completed build outputs" +msgstr "" + +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 +#: templates/js/translated/purchase_order.js:1304 +#: templates/js/translated/purchase_order.js:1719 +#: templates/js/translated/return_order.js:331 +#: templates/js/translated/sales_order.js:819 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 +msgid "Status" +msgstr "" + +#: build/serializers.py:510 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:511 +msgid "Complete outputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:580 +msgid "Remove Allocated Stock" +msgstr "" + +#: build/serializers.py:581 +msgid "Subtract any stock which has already been allocated to this build" +msgstr "" + +#: build/serializers.py:587 +msgid "Remove Incomplete Outputs" +msgstr "" + +#: build/serializers.py:588 +msgid "Delete any build outputs which have not been completed" +msgstr "" + +#: build/serializers.py:615 +msgid "Not permitted" +msgstr "" + +#: build/serializers.py:616 +msgid "Accept as consumed by this build order" +msgstr "" + +#: build/serializers.py:617 +msgid "Deallocate before completing this build order" +msgstr "" + +#: build/serializers.py:639 +msgid "Overallocated Stock" +msgstr "" + +#: build/serializers.py:641 +msgid "How do you want to handle extra stock items assigned to the build order" +msgstr "" + +#: build/serializers.py:651 +msgid "Some stock items have been overallocated" +msgstr "" + +#: build/serializers.py:656 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:657 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:667 templates/js/translated/build.js:315 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:673 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:683 templates/js/translated/build.js:319 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:692 templates/js/translated/build.js:303 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:722 +msgid "Build Line" +msgstr "" + +#: build/serializers.py:732 +msgid "Build output" +msgstr "" + +#: build/serializers.py:740 +msgid "Build output must point to the same build" +msgstr "" + +#: build/serializers.py:776 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:790 +msgid "bom_item.part must point to the same part as the build order" +msgstr "" + +#: build/serializers.py:805 stock/serializers.py:973 +msgid "Item must be in stock" +msgstr "" + +#: build/serializers.py:853 order/serializers.py:1182 +#, python-brace-format +msgid "Available quantity ({q}) exceeded" +msgstr "" + +#: build/serializers.py:859 +msgid "Build output must be specified for allocation of tracked parts" +msgstr "" + +#: build/serializers.py:866 +msgid "Build output cannot be specified for allocation of untracked parts" +msgstr "" + +#: build/serializers.py:890 order/serializers.py:1434 +msgid "Allocation items must be provided" +msgstr "" + +#: build/serializers.py:947 +msgid "Stock location where parts are to be sourced (leave blank to take from any location)" +msgstr "" + +#: build/serializers.py:955 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:956 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:961 +msgid "Interchangeable Stock" +msgstr "" + +#: build/serializers.py:962 +msgid "Stock items in multiple locations can be used interchangeably" +msgstr "" + +#: build/serializers.py:967 +msgid "Substitute Stock" +msgstr "" + +#: build/serializers.py:968 +msgid "Allow allocation of substitute parts" +msgstr "" + +#: build/serializers.py:973 +msgid "Optional Items" +msgstr "" + +#: build/serializers.py:974 +msgid "Allocate optional BOM items to build order" +msgstr "" + +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + +#: build/tasks.py:149 +msgid "Stock required for build order" +msgstr "" + +#: build/tasks.py:166 +msgid "Overdue Build Order" +msgstr "" + +#: build/tasks.py:171 +#, python-brace-format +msgid "Build order {bo} is now overdue" +msgstr "" + +#: build/templates/build/build_base.html:18 +msgid "Part thumbnail" +msgstr "" + +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 +#: order/templates/order/order_base.html:29 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 +msgid "Barcode actions" +msgstr "" + +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 +#: order/templates/order/order_base.html:33 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 +msgid "Show QR Code" +msgstr "" + +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 +#: order/templates/order/order_base.html:36 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 +#: templates/js/translated/barcode.js:496 +#: templates/js/translated/barcode.js:501 +msgid "Unlink Barcode" +msgstr "" + +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 +#: order/templates/order/order_base.html:38 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 +msgid "Link Barcode" +msgstr "" + +#: build/templates/build/build_base.html:56 +#: order/templates/order/order_base.html:46 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 +msgid "Print actions" +msgstr "" + +#: build/templates/build/build_base.html:60 +msgid "Print build order report" +msgstr "" + +#: build/templates/build/build_base.html:67 +msgid "Build actions" +msgstr "" + +#: build/templates/build/build_base.html:71 +msgid "Edit Build" +msgstr "" + +#: build/templates/build/build_base.html:73 +msgid "Cancel Build" +msgstr "" + +#: build/templates/build/build_base.html:76 +msgid "Duplicate Build" +msgstr "" + +#: build/templates/build/build_base.html:79 +msgid "Delete Build" +msgstr "" + +#: build/templates/build/build_base.html:84 +#: build/templates/build/build_base.html:85 +msgid "Complete Build" +msgstr "" + +#: build/templates/build/build_base.html:107 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:117 +msgid "No build outputs have been created for this build order" +msgstr "" + +#: build/templates/build/build_base.html:124 +msgid "Build Order is ready to mark as completed" +msgstr "" + +#: build/templates/build/build_base.html:129 +msgid "Build Order cannot be completed as outstanding outputs remain" +msgstr "" + +#: build/templates/build/build_base.html:134 +msgid "Required build quantity has not yet been completed" +msgstr "" + +#: build/templates/build/build_base.html:139 +msgid "Stock has not been fully allocated to this Build Order" +msgstr "" + +#: build/templates/build/build_base.html:160 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 +#: order/templates/order/return_order_base.html:164 +#: order/templates/order/sales_order_base.html:192 +#: report/templates/report/inventree_build_order_base.html:125 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 +#: templates/js/translated/purchase_order.js:1736 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:347 +#: templates/js/translated/return_order.js:751 +#: templates/js/translated/sales_order.js:835 +#: templates/js/translated/sales_order.js:1867 +msgid "Target Date" +msgstr "" + +#: build/templates/build/build_base.html:165 +#, python-format +msgid "This build was due on %(target)s" +msgstr "" + +#: build/templates/build/build_base.html:165 +#: build/templates/build/build_base.html:222 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 +msgid "Overdue" +msgstr "" + +#: build/templates/build/build_base.html:177 +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "" + +#: build/templates/build/build_base.html:190 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 +#: order/templates/order/sales_order_base.html:9 +#: order/templates/order/sales_order_base.html:28 +#: report/templates/report/inventree_build_order_base.html:135 +#: report/templates/report/inventree_so_report_base.html:14 +#: stock/templates/stock/item_base.html:369 +#: templates/email/overdue_sales_order.html:15 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:769 +#: templates/js/translated/sales_order.js:992 +#: templates/js/translated/stock.js:2895 +msgid "Sales Order" +msgstr "" + +#: build/templates/build/build_base.html:197 +#: build/templates/build/detail.html:115 +#: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 +msgid "Issued By" +msgstr "" + +#: build/templates/build/build_base.html:211 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 +msgid "Priority" +msgstr "" + +#: build/templates/build/build_base.html:273 +msgid "Delete Build Order" +msgstr "" + +#: build/templates/build/build_base.html:283 +msgid "Build Order QR Code" +msgstr "" + +#: build/templates/build/build_base.html:295 +msgid "Link Barcode to Build Order" +msgstr "" + +#: build/templates/build/detail.html:15 +msgid "Build Details" +msgstr "" + +#: build/templates/build/detail.html:38 +msgid "Stock Source" +msgstr "" + +#: build/templates/build/detail.html:43 +msgid "Stock can be taken from any available location." +msgstr "" + +#: build/templates/build/detail.html:49 order/models.py:1413 +#: templates/js/translated/purchase_order.js:2186 +msgid "Destination" +msgstr "" + +#: build/templates/build/detail.html:56 +msgid "Destination location not specified" +msgstr "" + +#: build/templates/build/detail.html:73 +msgid "Allocated Parts" +msgstr "" + +#: build/templates/build/detail.html:80 stock/admin.py:163 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1375 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1270 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 +msgid "Batch" +msgstr "" + +#: build/templates/build/detail.html:133 +#: order/templates/order/order_base.html:173 +#: order/templates/order/return_order_base.html:151 +#: order/templates/order/sales_order_base.html:186 +#: templates/js/translated/build.js:2195 +msgid "Created" +msgstr "" + +#: build/templates/build/detail.html:144 +msgid "No target date set" +msgstr "" + +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + +#: build/templates/build/detail.html:153 +msgid "Build not complete" +msgstr "" + +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 +msgid "Child Build Orders" +msgstr "" + +#: build/templates/build/detail.html:177 +msgid "Allocate Stock to Build" +msgstr "" + +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "" + +#: build/templates/build/detail.html:184 +msgid "Automatically allocate stock to build" +msgstr "" + +#: build/templates/build/detail.html:185 +msgid "Auto Allocate" +msgstr "" + +#: build/templates/build/detail.html:187 +msgid "Manually allocate stock to build" +msgstr "" + +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 +msgid "Allocate Stock" +msgstr "" + +#: build/templates/build/detail.html:191 +msgid "Order required parts" +msgstr "" + +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:803 +msgid "Order Parts" +msgstr "" + +#: build/templates/build/detail.html:210 +msgid "Incomplete Build Outputs" +msgstr "" + +#: build/templates/build/detail.html:214 +msgid "Create new build output" +msgstr "" + +#: build/templates/build/detail.html:215 +msgid "New Build Output" +msgstr "" + +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +msgid "Consumed Stock" +msgstr "" + +#: build/templates/build/detail.html:244 +msgid "Completed Build Outputs" +msgstr "" + +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 +#: company/templates/company/manufacturer_part_sidebar.html:9 +#: company/templates/company/sidebar.html:39 +#: order/templates/order/po_sidebar.html:9 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 +#: order/templates/order/return_order_sidebar.html:7 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 +#: stock/templates/stock/stock_sidebar.html:23 +msgid "Attachments" +msgstr "" + +#: build/templates/build/detail.html:271 +msgid "Build Notes" +msgstr "" + +#: build/templates/build/detail.html:426 +msgid "Allocation Complete" +msgstr "" + +#: build/templates/build/detail.html:427 +msgid "All lines have been fully allocated" +msgstr "" + +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 +msgid "New Build Order" +msgstr "" + +#: build/templates/build/sidebar.html:5 +msgid "Build Order Details" +msgstr "" + +#: build/templates/build/sidebar.html:10 +msgid "Incomplete Outputs" +msgstr "" + +#: common/files.py:63 +#, python-brace-format +msgid "Unsupported file format: {fmt}" +msgstr "" + +#: common/files.py:65 +msgid "Error reading file (invalid encoding)" +msgstr "" + +#: common/files.py:70 +msgid "Error reading file (invalid format)" +msgstr "" + +#: common/files.py:72 +msgid "Error reading file (incorrect dimension)" +msgstr "" + +#: common/files.py:74 +msgid "Error reading file (data could be corrupted)" +msgstr "" + +#: common/forms.py:12 +msgid "File" +msgstr "" + +#: common/forms.py:12 +msgid "Select file to upload" +msgstr "" + +#: common/forms.py:25 +msgid "{name.title()} File" +msgstr "" + +#: common/forms.py:26 +#, python-brace-format +msgid "Select {name} file to upload" +msgstr "" + +#: common/models.py:71 +msgid "Updated" +msgstr "" + +#: common/models.py:72 +msgid "Timestamp of last update" +msgstr "" + +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 +msgid "Unique project code" +msgstr "" + +#: common/models.py:137 +msgid "Project description" +msgstr "" + +#: common/models.py:146 +msgid "User or group responsible for this project" +msgstr "" + +#: common/models.py:735 +msgid "Settings key (must be unique - case insensitive)" +msgstr "" + +#: common/models.py:739 +msgid "Settings value" +msgstr "" + +#: common/models.py:791 +msgid "Chosen value is not a valid option" +msgstr "" + +#: common/models.py:807 +msgid "Value must be a boolean value" +msgstr "" + +#: common/models.py:815 +msgid "Value must be an integer value" +msgstr "" + +#: common/models.py:852 +msgid "Key string must be unique" +msgstr "" + +#: common/models.py:1084 +msgid "No group" +msgstr "" + +#: common/models.py:1127 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/models.py:1129 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "" + +#: common/models.py:1141 +msgid "No plugin" +msgstr "" + +#: common/models.py:1215 +msgid "Restart required" +msgstr "" + +#: common/models.py:1217 +msgid "A setting has been changed which requires a server restart" +msgstr "" + +#: common/models.py:1224 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1225 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1230 +msgid "Server Instance Name" +msgstr "" + +#: common/models.py:1232 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:1236 +msgid "Use instance name" +msgstr "" + +#: common/models.py:1237 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:1242 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:1243 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:1248 company/models.py:106 company/models.py:107 +msgid "Company name" +msgstr "" + +#: common/models.py:1249 +msgid "Internal company name" +msgstr "" + +#: common/models.py:1253 +msgid "Base URL" +msgstr "" + +#: common/models.py:1254 +msgid "Base URL for server instance" +msgstr "" + +#: common/models.py:1260 +msgid "Default Currency" +msgstr "" + +#: common/models.py:1261 +msgid "Select base currency for pricing calculations" +msgstr "" + +#: common/models.py:1267 +msgid "Currency Update Interval" +msgstr "" + +#: common/models.py:1269 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" + +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 +msgid "days" +msgstr "" + +#: common/models.py:1276 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1277 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1282 +msgid "Download from URL" +msgstr "" + +#: common/models.py:1284 +msgid "Allow download of remote images and files from external URL" +msgstr "" + +#: common/models.py:1290 +msgid "Download Size Limit" +msgstr "" + +#: common/models.py:1291 +msgid "Maximum allowable download size for remote image" +msgstr "" + +#: common/models.py:1297 +msgid "User-agent used to download from URL" +msgstr "" + +#: common/models.py:1299 +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "" + +#: common/models.py:1304 +msgid "Strict URL Validation" +msgstr "" + +#: common/models.py:1305 +msgid "Require schema specification when validating URLs" +msgstr "" + +#: common/models.py:1310 +msgid "Require confirm" +msgstr "" + +#: common/models.py:1311 +msgid "Require explicit user confirmation for certain action." +msgstr "" + +#: common/models.py:1316 +msgid "Tree Depth" +msgstr "" + +#: common/models.py:1318 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "" + +#: common/models.py:1324 +msgid "Update Check Interval" +msgstr "" + +#: common/models.py:1325 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" + +#: common/models.py:1331 +msgid "Automatic Backup" +msgstr "" + +#: common/models.py:1332 +msgid "Enable automatic backup of database and media files" +msgstr "" + +#: common/models.py:1337 +msgid "Auto Backup Interval" +msgstr "" + +#: common/models.py:1338 +msgid "Specify number of days between automated backup events" +msgstr "" + +#: common/models.py:1344 +msgid "Task Deletion Interval" +msgstr "" + +#: common/models.py:1346 +msgid "Background task results will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1353 +msgid "Error Log Deletion Interval" +msgstr "" + +#: common/models.py:1355 +msgid "Error logs will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1362 +msgid "Notification Deletion Interval" +msgstr "" + +#: common/models.py:1364 +msgid "User notifications will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "" + +#: common/models.py:1372 +msgid "Enable barcode scanner support in the web interface" +msgstr "" + +#: common/models.py:1377 +msgid "Barcode Input Delay" +msgstr "" + +#: common/models.py:1378 +msgid "Barcode input processing delay time" +msgstr "" + +#: common/models.py:1384 +msgid "Barcode Webcam Support" +msgstr "" + +#: common/models.py:1385 +msgid "Allow barcode scanning via webcam in browser" +msgstr "" + +#: common/models.py:1390 +msgid "Part Revisions" +msgstr "" + +#: common/models.py:1391 +msgid "Enable revision field for Part" +msgstr "" + +#: common/models.py:1396 +msgid "IPN Regex" +msgstr "" + +#: common/models.py:1397 +msgid "Regular expression pattern for matching Part IPN" +msgstr "" + +#: common/models.py:1400 +msgid "Allow Duplicate IPN" +msgstr "" + +#: common/models.py:1401 +msgid "Allow multiple parts to share the same IPN" +msgstr "" + +#: common/models.py:1406 +msgid "Allow Editing IPN" +msgstr "" + +#: common/models.py:1407 +msgid "Allow changing the IPN value while editing a part" +msgstr "" + +#: common/models.py:1412 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1413 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1418 +msgid "Copy Part Parameter Data" +msgstr "" + +#: common/models.py:1419 +msgid "Copy parameter data by default when duplicating a part" +msgstr "" + +#: common/models.py:1424 +msgid "Copy Part Test Data" +msgstr "" + +#: common/models.py:1425 +msgid "Copy test data by default when duplicating a part" +msgstr "" + +#: common/models.py:1430 +msgid "Copy Category Parameter Templates" +msgstr "" + +#: common/models.py:1431 +msgid "Copy category parameter templates when creating a part" +msgstr "" + +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" +msgstr "" + +#: common/models.py:1437 +msgid "Parts are templates by default" +msgstr "" + +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" +msgstr "" + +#: common/models.py:1443 +msgid "Parts can be assembled from other components by default" +msgstr "" + +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 +#: templates/js/translated/table_filters.js:725 +msgid "Component" +msgstr "" + +#: common/models.py:1449 +msgid "Parts can be used as sub-components by default" +msgstr "" + +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 +msgid "Purchaseable" +msgstr "" + +#: common/models.py:1455 +msgid "Parts are purchaseable by default" +msgstr "" + +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1461 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" +msgstr "" + +#: common/models.py:1467 +msgid "Parts are trackable by default" +msgstr "" + +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" +msgstr "" + +#: common/models.py:1473 +msgid "Parts are virtual by default" +msgstr "" + +#: common/models.py:1478 +msgid "Show Import in Views" +msgstr "" + +#: common/models.py:1479 +msgid "Display the import wizard in some part views" +msgstr "" + +#: common/models.py:1484 +msgid "Show related parts" +msgstr "" + +#: common/models.py:1485 +msgid "Display related parts for a part" +msgstr "" + +#: common/models.py:1490 +msgid "Initial Stock Data" +msgstr "" + +#: common/models.py:1491 +msgid "Allow creation of initial stock when adding a new part" +msgstr "" + +#: common/models.py:1496 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" +msgstr "" + +#: common/models.py:1498 +msgid "Allow creation of initial supplier data when adding a new part" +msgstr "" + +#: common/models.py:1504 +msgid "Part Name Display Format" +msgstr "" + +#: common/models.py:1505 +msgid "Format to display the part name" +msgstr "" + +#: common/models.py:1511 +msgid "Part Category Default Icon" +msgstr "" + +#: common/models.py:1512 +msgid "Part category default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1516 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1518 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1524 +msgid "Minimum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1526 +msgid "Minimum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1532 +msgid "Maximum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1534 +msgid "Maximum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1540 +msgid "Use Supplier Pricing" +msgstr "" + +#: common/models.py:1542 +msgid "Include supplier price breaks in overall pricing calculations" +msgstr "" + +#: common/models.py:1548 +msgid "Purchase History Override" +msgstr "" + +#: common/models.py:1550 +msgid "Historical purchase order pricing overrides supplier price breaks" +msgstr "" + +#: common/models.py:1556 +msgid "Use Stock Item Pricing" +msgstr "" + +#: common/models.py:1558 +msgid "Use pricing from manually entered stock data for pricing calculations" +msgstr "" + +#: common/models.py:1564 +msgid "Stock Item Pricing Age" +msgstr "" + +#: common/models.py:1566 +msgid "Exclude stock items older than this number of days from pricing calculations" +msgstr "" + +#: common/models.py:1573 +msgid "Use Variant Pricing" +msgstr "" + +#: common/models.py:1574 +msgid "Include variant pricing in overall pricing calculations" +msgstr "" + +#: common/models.py:1579 +msgid "Active Variants Only" +msgstr "" + +#: common/models.py:1581 +msgid "Only use active variant parts for calculating variant pricing" +msgstr "" + +#: common/models.py:1587 +msgid "Pricing Rebuild Interval" +msgstr "" + +#: common/models.py:1589 +msgid "Number of days before part pricing is automatically updated" +msgstr "" + +#: common/models.py:1596 +msgid "Internal Prices" +msgstr "" + +#: common/models.py:1597 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:1602 +msgid "Internal Price Override" +msgstr "" + +#: common/models.py:1604 +msgid "If available, internal prices override price range calculations" +msgstr "" + +#: common/models.py:1610 +msgid "Enable label printing" +msgstr "" + +#: common/models.py:1611 +msgid "Enable label printing from the web interface" +msgstr "" + +#: common/models.py:1616 +msgid "Label Image DPI" +msgstr "" + +#: common/models.py:1618 +msgid "DPI resolution when generating image files to supply to label printing plugins" +msgstr "" + +#: common/models.py:1624 +msgid "Enable Reports" +msgstr "" + +#: common/models.py:1625 +msgid "Enable generation of reports" +msgstr "" + +#: common/models.py:1630 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:1631 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 +msgid "Page Size" +msgstr "" + +#: common/models.py:1637 +msgid "Default page size for PDF reports" +msgstr "" + +#: common/models.py:1642 +msgid "Enable Test Reports" +msgstr "" + +#: common/models.py:1643 +msgid "Enable generation of test reports" +msgstr "" + +#: common/models.py:1648 +msgid "Attach Test Reports" +msgstr "" + +#: common/models.py:1650 +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +msgstr "" + +#: common/models.py:1656 +msgid "Globally Unique Serials" +msgstr "" + +#: common/models.py:1657 +msgid "Serial numbers for stock items must be globally unique" +msgstr "" + +#: common/models.py:1662 +msgid "Autofill Serial Numbers" +msgstr "" + +#: common/models.py:1663 +msgid "Autofill serial numbers in forms" +msgstr "" + +#: common/models.py:1668 +msgid "Delete Depleted Stock" +msgstr "" + +#: common/models.py:1670 +msgid "Determines default behaviour when a stock item is depleted" +msgstr "" + +#: common/models.py:1676 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:1678 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1683 +msgid "Stock Expiry" +msgstr "" + +#: common/models.py:1684 +msgid "Enable stock expiry functionality" +msgstr "" + +#: common/models.py:1689 +msgid "Sell Expired Stock" +msgstr "" + +#: common/models.py:1690 +msgid "Allow sale of expired stock" +msgstr "" + +#: common/models.py:1695 +msgid "Stock Stale Time" +msgstr "" + +#: common/models.py:1697 +msgid "Number of days stock items are considered stale before expiring" +msgstr "" + +#: common/models.py:1704 +msgid "Build Expired Stock" +msgstr "" + +#: common/models.py:1705 +msgid "Allow building with expired stock" +msgstr "" + +#: common/models.py:1710 +msgid "Stock Ownership Control" +msgstr "" + +#: common/models.py:1711 +msgid "Enable ownership control over stock locations and items" +msgstr "" + +#: common/models.py:1716 +msgid "Stock Location Default Icon" +msgstr "" + +#: common/models.py:1717 +msgid "Stock location default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1721 +msgid "Show Installed Stock Items" +msgstr "" + +#: common/models.py:1722 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1727 +msgid "Build Order Reference Pattern" +msgstr "" + +#: common/models.py:1729 +msgid "Required pattern for generating Build Order reference field" +msgstr "" + +#: common/models.py:1735 +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1736 +msgid "Enable return order functionality in the user interface" +msgstr "" + +#: common/models.py:1741 +msgid "Return Order Reference Pattern" +msgstr "" + +#: common/models.py:1743 +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1749 +msgid "Edit Completed Return Orders" +msgstr "" + +#: common/models.py:1751 +msgid "Allow editing of return orders after they have been completed" +msgstr "" + +#: common/models.py:1757 +msgid "Sales Order Reference Pattern" +msgstr "" + +#: common/models.py:1759 +msgid "Required pattern for generating Sales Order reference field" +msgstr "" + +#: common/models.py:1765 +msgid "Sales Order Default Shipment" +msgstr "" + +#: common/models.py:1766 +msgid "Enable creation of default shipment with sales orders" +msgstr "" + +#: common/models.py:1771 +msgid "Edit Completed Sales Orders" +msgstr "" + +#: common/models.py:1773 +msgid "Allow editing of sales orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1779 +msgid "Purchase Order Reference Pattern" +msgstr "" + +#: common/models.py:1781 +msgid "Required pattern for generating Purchase Order reference field" +msgstr "" + +#: common/models.py:1787 +msgid "Edit Completed Purchase Orders" +msgstr "" + +#: common/models.py:1789 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1795 +msgid "Auto Complete Purchase Orders" +msgstr "" + +#: common/models.py:1797 +msgid "Automatically mark purchase orders as complete when all line items are received" +msgstr "" + +#: common/models.py:1804 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1805 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1810 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1811 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1816 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1817 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1822 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1824 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1830 +msgid "Email required" +msgstr "" + +#: common/models.py:1831 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1836 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1838 +msgid "Automatically fill out user-details from SSO account-data" +msgstr "" + +#: common/models.py:1844 +msgid "Mail twice" +msgstr "" + +#: common/models.py:1845 +msgid "On signup ask users twice for their mail" +msgstr "" + +#: common/models.py:1850 +msgid "Password twice" +msgstr "" + +#: common/models.py:1851 +msgid "On signup ask users twice for their password" +msgstr "" + +#: common/models.py:1856 +msgid "Allowed domains" +msgstr "" + +#: common/models.py:1858 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgstr "" + +#: common/models.py:1864 +msgid "Group on signup" +msgstr "" + +#: common/models.py:1865 +msgid "Group to which new users are assigned on registration" +msgstr "" + +#: common/models.py:1870 +msgid "Enforce MFA" +msgstr "" + +#: common/models.py:1871 +msgid "Users must use multifactor security." +msgstr "" + +#: common/models.py:1876 +msgid "Check plugins on startup" +msgstr "" + +#: common/models.py:1878 +msgid "Check that all plugins are installed on startup - enable in container environments" +msgstr "" + +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 +msgid "Enable URL integration" +msgstr "" + +#: common/models.py:1894 +msgid "Enable plugins to add URL routes" +msgstr "" + +#: common/models.py:1900 +msgid "Enable navigation integration" +msgstr "" + +#: common/models.py:1901 +msgid "Enable plugins to integrate into navigation" +msgstr "" + +#: common/models.py:1907 +msgid "Enable app integration" +msgstr "" + +#: common/models.py:1908 +msgid "Enable plugins to add apps" +msgstr "" + +#: common/models.py:1914 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:1915 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1921 +msgid "Enable event integration" +msgstr "" + +#: common/models.py:1922 +msgid "Enable plugins to respond to internal events" +msgstr "" + +#: common/models.py:1928 +msgid "Enable project codes" +msgstr "" + +#: common/models.py:1929 +msgid "Enable project codes for tracking projects" +msgstr "" + +#: common/models.py:1934 +msgid "Stocktake Functionality" +msgstr "" + +#: common/models.py:1936 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgstr "" + +#: common/models.py:1942 +msgid "Exclude External Locations" +msgstr "" + +#: common/models.py:1944 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "" + +#: common/models.py:1950 +msgid "Automatic Stocktake Period" +msgstr "" + +#: common/models.py:1952 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" +msgstr "" + +#: common/models.py:1958 +msgid "Report Deletion Interval" +msgstr "" + +#: common/models.py:1960 +msgid "Stocktake reports will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1967 +msgid "Display Users full names" +msgstr "" + +#: common/models.py:1968 +msgid "Display Users full names instead of usernames" +msgstr "" + +#: common/models.py:1980 common/models.py:2380 +msgid "Settings key (must be unique - case insensitive" +msgstr "" + +#: common/models.py:2021 +msgid "Hide inactive parts" +msgstr "" + +#: common/models.py:2023 +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "" + +#: common/models.py:2029 +msgid "Show subscribed parts" +msgstr "" + +#: common/models.py:2030 +msgid "Show subscribed parts on the homepage" +msgstr "" + +#: common/models.py:2035 +msgid "Show subscribed categories" +msgstr "" + +#: common/models.py:2036 +msgid "Show subscribed part categories on the homepage" +msgstr "" + +#: common/models.py:2041 +msgid "Show latest parts" +msgstr "" + +#: common/models.py:2042 +msgid "Show latest parts on the homepage" +msgstr "" + +#: common/models.py:2047 +msgid "Show unvalidated BOMs" +msgstr "" + +#: common/models.py:2048 +msgid "Show BOMs that await validation on the homepage" +msgstr "" + +#: common/models.py:2053 +msgid "Show recent stock changes" +msgstr "" + +#: common/models.py:2054 +msgid "Show recently changed stock items on the homepage" +msgstr "" + +#: common/models.py:2059 +msgid "Show low stock" +msgstr "" + +#: common/models.py:2060 +msgid "Show low stock items on the homepage" +msgstr "" + +#: common/models.py:2065 +msgid "Show depleted stock" +msgstr "" + +#: common/models.py:2066 +msgid "Show depleted stock items on the homepage" +msgstr "" + +#: common/models.py:2071 +msgid "Show needed stock" +msgstr "" + +#: common/models.py:2072 +msgid "Show stock items needed for builds on the homepage" +msgstr "" + +#: common/models.py:2077 +msgid "Show expired stock" +msgstr "" + +#: common/models.py:2078 +msgid "Show expired stock items on the homepage" +msgstr "" + +#: common/models.py:2083 +msgid "Show stale stock" +msgstr "" + +#: common/models.py:2084 +msgid "Show stale stock items on the homepage" +msgstr "" + +#: common/models.py:2089 +msgid "Show pending builds" +msgstr "" + +#: common/models.py:2090 +msgid "Show pending builds on the homepage" +msgstr "" + +#: common/models.py:2095 +msgid "Show overdue builds" +msgstr "" + +#: common/models.py:2096 +msgid "Show overdue builds on the homepage" +msgstr "" + +#: common/models.py:2101 +msgid "Show outstanding POs" +msgstr "" + +#: common/models.py:2102 +msgid "Show outstanding POs on the homepage" +msgstr "" + +#: common/models.py:2107 +msgid "Show overdue POs" +msgstr "" + +#: common/models.py:2108 +msgid "Show overdue POs on the homepage" +msgstr "" + +#: common/models.py:2113 +msgid "Show outstanding SOs" +msgstr "" + +#: common/models.py:2114 +msgid "Show outstanding SOs on the homepage" +msgstr "" + +#: common/models.py:2119 +msgid "Show overdue SOs" +msgstr "" + +#: common/models.py:2120 +msgid "Show overdue SOs on the homepage" +msgstr "" + +#: common/models.py:2125 +msgid "Show pending SO shipments" +msgstr "" + +#: common/models.py:2126 +msgid "Show pending SO shipments on the homepage" +msgstr "" + +#: common/models.py:2131 +msgid "Show News" +msgstr "" + +#: common/models.py:2132 +msgid "Show news on the homepage" +msgstr "" + +#: common/models.py:2137 +msgid "Inline label display" +msgstr "" + +#: common/models.py:2139 +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2145 +msgid "Default label printer" +msgstr "" + +#: common/models.py:2147 +msgid "Configure which label printer should be selected by default" +msgstr "" + +#: common/models.py:2153 +msgid "Inline report display" +msgstr "" + +#: common/models.py:2155 +msgid "Display PDF reports in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2161 +msgid "Search Parts" +msgstr "" + +#: common/models.py:2162 +msgid "Display parts in search preview window" +msgstr "" + +#: common/models.py:2167 +msgid "Search Supplier Parts" +msgstr "" + +#: common/models.py:2168 +msgid "Display supplier parts in search preview window" +msgstr "" + +#: common/models.py:2173 +msgid "Search Manufacturer Parts" +msgstr "" + +#: common/models.py:2174 +msgid "Display manufacturer parts in search preview window" +msgstr "" + +#: common/models.py:2179 +msgid "Hide Inactive Parts" +msgstr "" + +#: common/models.py:2180 +msgid "Excluded inactive parts from search preview window" +msgstr "" + +#: common/models.py:2185 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2186 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2192 +msgid "Display stock items in search preview window" +msgstr "" + +#: common/models.py:2197 +msgid "Hide Unavailable Stock Items" +msgstr "" + +#: common/models.py:2199 +msgid "Exclude stock items which are not available from the search preview window" +msgstr "" + +#: common/models.py:2205 +msgid "Search Locations" +msgstr "" + +#: common/models.py:2206 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2211 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2212 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2217 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2218 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2223 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2224 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2229 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2231 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2237 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2238 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2243 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2245 +msgid "Exclude inactive sales orders from search preview window" +msgstr "" + +#: common/models.py:2251 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2252 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2257 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2259 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2265 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2267 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2273 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2274 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2279 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2280 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2285 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2286 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2291 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2292 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2297 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2298 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2303 +msgid "Date Format" +msgstr "" + +#: common/models.py:2304 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2317 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2318 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2323 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2325 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2331 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2333 +msgid "Maximum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2339 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2340 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2345 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2347 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2353 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2355 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2361 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2362 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:741 +msgid "Price" +msgstr "" + +#: common/models.py:2419 +msgid "Unit price at specified quantity" +msgstr "" + +#: common/models.py:2590 common/models.py:2775 +msgid "Endpoint" +msgstr "" + +#: common/models.py:2591 +msgid "Endpoint at which this webhook is received" +msgstr "" + +#: common/models.py:2601 +msgid "Name for this webhook" +msgstr "" + +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:169 +msgid "Active" +msgstr "" + +#: common/models.py:2605 +msgid "Is this webhook active" +msgstr "" + +#: common/models.py:2621 users/models.py:148 +msgid "Token" +msgstr "" + +#: common/models.py:2622 +msgid "Token for access" +msgstr "" + +#: common/models.py:2630 +msgid "Secret" +msgstr "" + +#: common/models.py:2631 +msgid "Shared secret for HMAC" +msgstr "" + +#: common/models.py:2739 +msgid "Message ID" +msgstr "" + +#: common/models.py:2740 +msgid "Unique identifier for this message" +msgstr "" + +#: common/models.py:2748 +msgid "Host" +msgstr "" + +#: common/models.py:2749 +msgid "Host from which this message was received" +msgstr "" + +#: common/models.py:2757 +msgid "Header" +msgstr "" + +#: common/models.py:2758 +msgid "Header of this message" +msgstr "" + +#: common/models.py:2765 +msgid "Body" +msgstr "" + +#: common/models.py:2766 +msgid "Body of this message" +msgstr "" + +#: common/models.py:2776 +msgid "Endpoint on which this message was received" +msgstr "" + +#: common/models.py:2781 +msgid "Worked on" +msgstr "" + +#: common/models.py:2782 +msgid "Was the work on this message finished?" +msgstr "" + +#: common/models.py:2908 +msgid "Id" +msgstr "" + +#: common/models.py:2910 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 +msgid "Title" +msgstr "" + +#: common/models.py:2914 templates/js/translated/news.js:60 +msgid "Published" +msgstr "" + +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 +msgid "Author" +msgstr "" + +#: common/models.py:2918 templates/js/translated/news.js:52 +msgid "Summary" +msgstr "" + +#: common/models.py:2921 +msgid "Read" +msgstr "" + +#: common/models.py:2921 +msgid "Was this news item read?" +msgstr "" + +#: common/models.py:2938 company/models.py:154 part/models.py:924 +#: report/templates/report/inventree_bill_of_materials_report.html:126 +#: report/templates/report/inventree_bill_of_materials_report.html:148 +#: report/templates/report/inventree_return_order_report_base.html:35 +#: stock/templates/stock/item_base.html:133 templates/503.html:31 +#: templates/hover_image.html:7 templates/hover_image.html:9 +#: templates/modals.html:6 +msgid "Image" +msgstr "" + +#: common/models.py:2938 +msgid "Image file" +msgstr "" + +#: common/models.py:2980 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2999 +msgid "Unit name" +msgstr "" + +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:3007 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:3015 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:314 +#, python-brace-format +msgid "New {verbose_name}" +msgstr "" + +#: common/notifications.py:316 +msgid "A new order has been created and assigned to you" +msgstr "" + +#: common/notifications.py:322 +#, python-brace-format +msgid "{verbose_name} canceled" +msgstr "" + +#: common/notifications.py:324 +msgid "A order that is assigned to you was canceled" +msgstr "" + +#: common/notifications.py:330 common/notifications.py:337 +msgid "Items Received" +msgstr "" + +#: common/notifications.py:332 +msgid "Items have been received against a purchase order" +msgstr "" + +#: common/notifications.py:339 +msgid "Items have been received against a return order" +msgstr "" + +#: common/notifications.py:457 +msgid "Error raised by plugin" +msgstr "" + +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + +#: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 +#: order/templates/order/purchase_order_detail.html:24 order/views.py:118 +#: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 +#: templates/patterns/wizard/upload.html:37 +msgid "Upload File" +msgstr "" + +#: common/views.py:84 order/templates/order/order_wizard/match_fields.html:52 +#: order/views.py:119 +#: part/templates/part/import_wizard/ajax_match_fields.html:45 +#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:110 +#: templates/patterns/wizard/match_fields.html:51 +msgid "Match Fields" +msgstr "" + +#: common/views.py:84 +msgid "Match Items" +msgstr "" + +#: common/views.py:401 +msgid "Fields matching failed" +msgstr "" + +#: common/views.py:464 +msgid "Parts imported" +msgstr "" + +#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27 +#: order/templates/order/order_wizard/match_parts.html:19 +#: order/templates/order/order_wizard/po_upload.html:49 +#: part/templates/part/import_wizard/match_fields.html:27 +#: part/templates/part/import_wizard/match_references.html:19 +#: part/templates/part/import_wizard/part_upload.html:56 +#: templates/patterns/wizard/match_fields.html:26 +#: templates/patterns/wizard/upload.html:35 +msgid "Previous Step" +msgstr "" + +#: company/models.py:112 +msgid "Company description" +msgstr "" + +#: company/models.py:113 +msgid "Description of the company" +msgstr "" + +#: company/models.py:118 company/templates/company/company_base.html:100 +#: templates/InvenTree/settings/plugin_settings.html:54 +#: templates/js/translated/company.js:522 +msgid "Website" +msgstr "" + +#: company/models.py:118 +msgid "Company website URL" +msgstr "" + +#: company/models.py:123 +msgid "Phone number" +msgstr "" + +#: company/models.py:125 +msgid "Contact phone number" +msgstr "" + +#: company/models.py:132 +msgid "Contact email address" +msgstr "" + +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 +msgid "Contact" +msgstr "" + +#: company/models.py:139 +msgid "Point of contact" +msgstr "" + +#: company/models.py:145 +msgid "Link to external company information" +msgstr "" + +#: company/models.py:159 +msgid "is customer" +msgstr "" + +#: company/models.py:160 +msgid "Do you sell items to this company?" +msgstr "" + +#: company/models.py:165 +msgid "is supplier" +msgstr "" + +#: company/models.py:166 +msgid "Do you purchase items from this company?" +msgstr "" + +#: company/models.py:171 +msgid "is manufacturer" +msgstr "" + +#: company/models.py:172 +msgid "Does this company manufacture parts?" +msgstr "" + +#: company/models.py:180 +msgid "Default currency used for this company" +msgstr "" + +#: company/models.py:265 company/models.py:374 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:733 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 +msgid "Company" +msgstr "" + +#: company/models.py:375 +msgid "Select company" +msgstr "" + +#: company/models.py:380 +msgid "Address title" +msgstr "" + +#: company/models.py:381 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:387 +msgid "Primary address" +msgstr "" + +#: company/models.py:388 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:393 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:394 +msgid "Address line 1" +msgstr "" + +#: company/models.py:400 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:401 +msgid "Address line 2" +msgstr "" + +#: company/models.py:407 company/models.py:408 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:414 +msgid "City/Region" +msgstr "" + +#: company/models.py:415 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:421 +msgid "State/Province" +msgstr "" + +#: company/models.py:422 +msgid "State or province" +msgstr "" + +#: company/models.py:428 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:429 +msgid "Address country" +msgstr "" + +#: company/models.py:435 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:436 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:442 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:443 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:450 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:481 company/models.py:780 stock/models.py:749 +#: stock/serializers.py:199 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 +msgid "Base Part" +msgstr "" + +#: company/models.py:483 company/models.py:782 +msgid "Select part" +msgstr "" + +#: company/models.py:492 company/templates/company/company_base.html:76 +#: company/templates/company/manufacturer_part.html:90 +#: company/templates/company/supplier_part.html:145 part/serializers.py:467 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 +msgid "Manufacturer" +msgstr "" + +#: company/models.py:493 +msgid "Select manufacturer" +msgstr "" + +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:477 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1800 +#: templates/js/translated/purchase_order.js:1848 +#: templates/js/translated/purchase_order.js:2050 +msgid "MPN" +msgstr "" + +#: company/models.py:500 +msgid "Manufacturer Part Number" +msgstr "" + +#: company/models.py:507 +msgid "URL for external manufacturer part link" +msgstr "" + +#: company/models.py:515 +msgid "Manufacturer part description" +msgstr "" + +#: company/models.py:572 company/models.py:599 company/models.py:806 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 +#: stock/templates/stock/item_base.html:217 +msgid "Manufacturer Part" +msgstr "" + +#: company/models.py:606 +msgid "Parameter name" +msgstr "" + +#: company/models.py:612 +#: report/templates/report/inventree_test_report_base.html:104 +#: stock/models.py:2354 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 +#: templates/js/translated/stock.js:1502 +msgid "Value" +msgstr "" + +#: company/models.py:613 +msgid "Parameter value" +msgstr "" + +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 +msgid "Units" +msgstr "" + +#: company/models.py:621 +msgid "Parameter units" +msgstr "" + +#: company/models.py:720 +msgid "Pack units must be compatible with the base part units" +msgstr "" + +#: company/models.py:727 +msgid "Pack units must be greater than zero" +msgstr "" + +#: company/models.py:741 +msgid "Linked manufacturer part must reference the same base part" +msgstr "" + +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 +#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 +#: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 +#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 +#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224 +#: templates/email/overdue_purchase_order.html:16 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1768 +#: templates/js/translated/pricing.js:498 +#: templates/js/translated/purchase_order.js:1686 +#: templates/js/translated/table_filters.js:796 +msgid "Supplier" +msgstr "" + +#: company/models.py:791 +msgid "Select supplier" +msgstr "" + +#: company/models.py:797 part/serializers.py:462 +msgid "Supplier stock keeping unit" +msgstr "" + +#: company/models.py:807 +msgid "Select manufacturer part" +msgstr "" + +#: company/models.py:814 +msgid "URL for external supplier part link" +msgstr "" + +#: company/models.py:822 +msgid "Supplier part description" +msgstr "" + +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_bill_of_materials_report.html:140 +#: report/templates/report/inventree_po_report_base.html:32 +#: report/templates/report/inventree_return_order_report_base.html:27 +#: report/templates/report/inventree_slr_report.html:105 +#: report/templates/report/inventree_so_report_base.html:32 +#: stock/serializers.py:505 +msgid "Note" +msgstr "" + +#: company/models.py:838 part/models.py:1962 +msgid "base cost" +msgstr "" + +#: company/models.py:839 part/models.py:1963 +msgid "Minimum charge (e.g. stocking fee)" +msgstr "" + +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 +msgid "Packaging" +msgstr "" + +#: company/models.py:847 +msgid "Part packaging" +msgstr "" + +#: company/models.py:852 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: templates/js/translated/purchase_order.js:314 +#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:1099 +#: templates/js/translated/purchase_order.js:2081 +#: templates/js/translated/purchase_order.js:2098 +msgid "Pack Quantity" +msgstr "" + +#: company/models.py:854 +msgid "Total quantity supplied in a single pack. Leave empty for single items." +msgstr "" + +#: company/models.py:873 part/models.py:1969 +msgid "multiple" +msgstr "" + +#: company/models.py:874 +msgid "Order multiple" +msgstr "" + +#: company/models.py:886 +msgid "Quantity available from supplier" +msgstr "" + +#: company/models.py:892 +msgid "Availability Updated" +msgstr "" + +#: company/models.py:893 +msgid "Date of last update of availability data" +msgstr "" + +#: company/serializers.py:153 +msgid "Default currency used for this supplier" +msgstr "" + +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:242 +msgid "Create Purchase Order" +msgstr "" + +#: company/templates/company/company_base.html:27 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:32 +msgid "Edit company information" +msgstr "" + +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:37 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 +msgid "Delete Company" +msgstr "" + +#: company/templates/company/company_base.html:47 +#: company/templates/company/manufacturer_part.html:51 +#: company/templates/company/supplier_part.html:83 +#: part/templates/part/part_thumb.html:20 +#: report/templates/report/inventree_build_order_base.html:98 +#: report/templates/report/inventree_po_report_base.html:40 +#: report/templates/report/inventree_so_report_base.html:40 +#: report/templates/report/inventree_test_report_base.html:84 +#: report/templates/report/inventree_test_report_base.html:163 +msgid "Part image" +msgstr "" + +#: company/templates/company/company_base.html:55 +#: part/templates/part/part_thumb.html:12 +msgid "Upload new image" +msgstr "" + +#: company/templates/company/company_base.html:58 +#: part/templates/part/part_thumb.html:14 +msgid "Download image from URL" +msgstr "" + +#: company/templates/company/company_base.html:60 +#: part/templates/part/part_thumb.html:16 +msgid "Delete image" +msgstr "" + +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 +#: stock/templates/stock/item_base.html:405 +#: templates/email/overdue_sales_order.html:16 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:296 +#: templates/js/translated/sales_order.js:784 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 +msgid "Customer" +msgstr "" + +#: company/templates/company/company_base.html:111 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:118 order/models.py:328 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 +msgid "Remove Image" +msgstr "" + +#: company/templates/company/company_base.html:206 +msgid "Remove associated image from this company" +msgstr "" + +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 +#: templates/InvenTree/settings/user.html:88 +#: templates/InvenTree/settings/user_sso.html:43 +msgid "Remove" +msgstr "" + +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 +msgid "Upload Image" +msgstr "" + +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 +msgid "Download Image" +msgstr "" + +#: company/templates/company/detail.html:15 +#: company/templates/company/manufacturer_part_sidebar.html:7 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 +msgid "Supplier Parts" +msgstr "" + +#: company/templates/company/detail.html:19 +msgid "Create new supplier part" +msgstr "" + +#: company/templates/company/detail.html:20 +#: company/templates/company/manufacturer_part.html:123 +#: part/templates/part/detail.html:356 +msgid "New Supplier Part" +msgstr "" + +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 +msgid "Manufacturer Parts" +msgstr "" + +#: company/templates/company/detail.html:45 +msgid "Create new manufacturer part" +msgstr "" + +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 +msgid "New Manufacturer Part" +msgstr "" + +#: company/templates/company/detail.html:65 +msgid "Supplier Stock" +msgstr "" + +#: company/templates/company/detail.html:75 +#: company/templates/company/sidebar.html:12 +#: company/templates/company/supplier_part_sidebar.html:7 +#: order/templates/order/order_base.html:13 +#: order/templates/order/purchase_orders.html:8 +#: order/templates/order/purchase_orders.html:12 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:195 +msgid "Purchase Orders" +msgstr "" + +#: company/templates/company/detail.html:79 +#: order/templates/order/purchase_orders.html:17 +msgid "Create new purchase order" +msgstr "" + +#: company/templates/company/detail.html:80 +#: order/templates/order/purchase_orders.html:18 +msgid "New Purchase Order" +msgstr "" + +#: company/templates/company/detail.html:101 +#: company/templates/company/sidebar.html:21 +#: order/templates/order/sales_order_base.html:13 +#: order/templates/order/sales_orders.html:8 +#: order/templates/order/sales_orders.html:15 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:196 +msgid "Sales Orders" +msgstr "" + +#: company/templates/company/detail.html:105 +#: order/templates/order/sales_orders.html:20 +msgid "Create new sales order" +msgstr "" + +#: company/templates/company/detail.html:106 +#: order/templates/order/sales_orders.html:21 +msgid "New Sales Order" +msgstr "" + +#: company/templates/company/detail.html:126 +msgid "Assigned Stock" +msgstr "" + +#: company/templates/company/detail.html:142 +#: company/templates/company/sidebar.html:29 +#: order/templates/order/return_order_base.html:13 +#: order/templates/order/return_orders.html:8 +#: order/templates/order/return_orders.html:15 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:197 +msgid "Return Orders" +msgstr "" + +#: company/templates/company/detail.html:146 +#: order/templates/order/return_orders.html:20 +msgid "Create new return order" +msgstr "" + +#: company/templates/company/detail.html:147 +#: order/templates/order/return_orders.html:21 +msgid "New Return Order" +msgstr "" + +#: company/templates/company/detail.html:168 +msgid "Company Notes" +msgstr "" + +#: company/templates/company/detail.html:183 +msgid "Company Contacts" +msgstr "" + +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 +msgid "Add Contact" +msgstr "" + +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "" + +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 +#: templates/InvenTree/search.html:180 templates/navbar.html:49 +msgid "Manufacturers" +msgstr "" + +#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 +msgid "Order part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:39 +#: templates/js/translated/company.js:1333 +msgid "Edit manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:43 +#: templates/js/translated/company.js:1334 +msgid "Delete manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:65 +#: company/templates/company/supplier_part.html:97 +msgid "Internal Part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:95 +msgid "No manufacturer information available" +msgstr "" + +#: company/templates/company/manufacturer_part.html:119 +#: company/templates/company/supplier_part.html:15 company/views.py:31 +#: part/admin.py:122 part/templates/part/part_sidebar.html:33 +#: templates/InvenTree/search.html:190 templates/navbar.html:48 +msgid "Suppliers" +msgstr "" + +#: company/templates/company/manufacturer_part.html:156 +#: company/templates/company/manufacturer_part_sidebar.html:5 +#: part/templates/part/category_sidebar.html:20 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 +#: templates/InvenTree/settings/category.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1422 +msgid "Add Parameter" +msgstr "" + +#: company/templates/company/sidebar.html:6 +msgid "Manufactured Parts" +msgstr "" + +#: company/templates/company/sidebar.html:10 +msgid "Supplied Parts" +msgstr "" + +#: company/templates/company/sidebar.html:16 +msgid "Supplied Stock Items" +msgstr "" + +#: company/templates/company/sidebar.html:25 +msgid "Assigned Stock Items" +msgstr "" + +#: company/templates/company/sidebar.html:33 +msgid "Contacts" +msgstr "" + +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + +#: company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:761 +#: templates/js/translated/stock.js:2250 +msgid "Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 +msgid "Supplier part actions" +msgstr "" + +#: company/templates/company/supplier_part.html:55 +#: company/templates/company/supplier_part.html:56 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 +msgid "Order Part" +msgstr "" + +#: company/templates/company/supplier_part.html:60 +#: company/templates/company/supplier_part.html:61 +msgid "Update Availability" +msgstr "" + +#: company/templates/company/supplier_part.html:63 +#: company/templates/company/supplier_part.html:64 +#: templates/js/translated/company.js:294 +msgid "Edit Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:68 +#: company/templates/company/supplier_part.html:69 +#: templates/js/translated/company.js:269 +msgid "Duplicate Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:73 +msgid "Delete Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:74 +msgid "Delete Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:133 +msgid "No supplier information available" +msgstr "" + +#: company/templates/company/supplier_part.html:139 part/bom.py:279 +#: part/bom.py:311 part/serializers.py:461 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: templates/js/translated/pricing.js:510 +#: templates/js/translated/purchase_order.js:1847 +#: templates/js/translated/purchase_order.js:2025 +msgid "SKU" +msgstr "" + +#: company/templates/company/supplier_part.html:206 +msgid "Supplier Part Stock" +msgstr "" + +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 +msgid "Create new stock item" +msgstr "" + +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 +msgid "New Stock Item" +msgstr "" + +#: company/templates/company/supplier_part.html:223 +msgid "Supplier Part Orders" +msgstr "" + +#: company/templates/company/supplier_part.html:246 +msgid "Pricing Information" +msgstr "" + +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 +#: templates/js/translated/pricing.js:684 +msgid "Add Price Break" +msgstr "" + +#: company/templates/company/supplier_part.html:276 +msgid "Supplier Part QR Code" +msgstr "" + +#: company/templates/company/supplier_part.html:287 +msgid "Link Barcode to Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:359 +msgid "Update Part Availability" +msgstr "" + +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 +#: stock/templates/stock/location_sidebar.html:7 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:193 +msgid "Stock Items" +msgstr "" + +#: company/templates/company/supplier_part_sidebar.html:9 +msgid "Supplier Part Pricing" +msgstr "" + +#: company/views.py:32 +msgid "New Supplier" +msgstr "" + +#: company/views.py:38 +msgid "New Manufacturer" +msgstr "" + +#: company/views.py:43 templates/InvenTree/search.html:210 +#: templates/navbar.html:60 +msgid "Customers" +msgstr "" + +#: company/views.py:44 +msgid "New Customer" +msgstr "" + +#: company/views.py:51 templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/views.py:52 +msgid "New Company" +msgstr "" + +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + +#: label/models.py:115 +msgid "Label name" +msgstr "" + +#: label/models.py:123 +msgid "Label description" +msgstr "" + +#: label/models.py:131 +msgid "Label" +msgstr "" + +#: label/models.py:132 +msgid "Label template file" +msgstr "" + +#: label/models.py:138 report/models.py:322 +msgid "Enabled" +msgstr "" + +#: label/models.py:139 +msgid "Label template is enabled" +msgstr "" + +#: label/models.py:144 +msgid "Width [mm]" +msgstr "" + +#: label/models.py:145 +msgid "Label width, specified in mm" +msgstr "" + +#: label/models.py:151 +msgid "Height [mm]" +msgstr "" + +#: label/models.py:152 +msgid "Label height, specified in mm" +msgstr "" + +#: label/models.py:158 report/models.py:315 +msgid "Filename Pattern" +msgstr "" + +#: label/models.py:159 +msgid "Pattern for generating label filenames" +msgstr "" + +#: label/models.py:308 label/models.py:347 label/models.py:372 +#: label/models.py:407 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: label/models.py:309 label/models.py:348 label/models.py:373 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 +msgid "Filters" +msgstr "" + +#: label/templates/label/part/part_label.html:31 +#: label/templates/label/stockitem/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 +#: templates/allauth_2fa/setup.html:18 +msgid "QR Code" +msgstr "" + +#: label/templates/label/part/part_label_code128.html:31 +#: label/templates/label/stocklocation/qr_and_text.html:31 +#: templates/qr_code.html:7 +msgid "QR code" +msgstr "" + +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 +#: report/templates/report/inventree_po_report_base.html:31 +#: report/templates/report/inventree_so_report_base.html:31 +#: templates/js/translated/order.js:327 +#: templates/js/translated/purchase_order.js:2122 +#: templates/js/translated/sales_order.js:1847 +msgid "Total Price" +msgstr "" + +#: order/api.py:233 +msgid "No matching purchase order found" +msgstr "" + +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 +#: order/templates/order/order_base.html:9 +#: order/templates/order/order_base.html:18 +#: report/templates/report/inventree_po_report_base.html:14 +#: stock/templates/stock/item_base.html:176 +#: templates/email/overdue_purchase_order.html:15 +#: templates/js/translated/part.js:1745 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:168 +#: templates/js/translated/purchase_order.js:762 +#: templates/js/translated/purchase_order.js:1670 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 +msgid "Purchase Order" +msgstr "" + +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 +#: order/templates/order/return_order_base.html:9 +#: order/templates/order/return_order_base.html:28 +#: report/templates/report/inventree_return_order_report_base.html:13 +#: templates/js/translated/return_order.js:281 +#: templates/js/translated/stock.js:2912 +msgid "Return Order" +msgstr "" + +#: order/models.py:89 +msgid "Total price for this order" +msgstr "" + +#: order/models.py:94 order/serializers.py:54 +msgid "Order Currency" +msgstr "" + +#: order/models.py:97 order/serializers.py:55 +msgid "Currency for this order (leave blank to use company default)" +msgstr "" + +#: order/models.py:233 +msgid "Contact does not match selected company" +msgstr "" + +#: order/models.py:265 +msgid "Order description (optional)" +msgstr "" + +#: order/models.py:274 +msgid "Select project code for this order" +msgstr "" + +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +msgid "Link to external page" +msgstr "" + +#: order/models.py:286 +msgid "Expected date for order delivery. Order will be overdue after this date." +msgstr "" + +#: order/models.py:300 +msgid "Created By" +msgstr "" + +#: order/models.py:308 +msgid "User or group responsible for this order" +msgstr "" + +#: order/models.py:319 +msgid "Point of contact for this order" +msgstr "" + +#: order/models.py:329 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:428 order/models.py:882 +msgid "Order reference" +msgstr "" + +#: order/models.py:436 order/models.py:906 +msgid "Purchase order status" +msgstr "" + +#: order/models.py:451 +msgid "Company from which the items are being ordered" +msgstr "" + +#: order/models.py:462 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1699 +msgid "Supplier Reference" +msgstr "" + +#: order/models.py:463 +msgid "Supplier order reference code" +msgstr "" + +#: order/models.py:472 +msgid "received by" +msgstr "" + +#: order/models.py:478 order/models.py:2001 +msgid "Issue Date" +msgstr "" + +#: order/models.py:479 order/models.py:2002 +msgid "Date order was issued" +msgstr "" + +#: order/models.py:486 order/models.py:2009 +msgid "Date order was completed" +msgstr "" + +#: order/models.py:530 +msgid "Part supplier must match PO supplier" +msgstr "" + +#: order/models.py:724 +msgid "Quantity must be a positive number" +msgstr "" + +#: order/models.py:894 +msgid "Company to which the items are being sold" +msgstr "" + +#: order/models.py:917 order/models.py:1994 +msgid "Customer Reference " +msgstr "" + +#: order/models.py:918 order/models.py:1995 +msgid "Customer order reference code" +msgstr "" + +#: order/models.py:922 order/models.py:1628 +#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/sales_order.js:1024 +msgid "Shipment Date" +msgstr "" + +#: order/models.py:931 +msgid "shipped by" +msgstr "" + +#: order/models.py:982 +msgid "Order cannot be completed as no parts have been assigned" +msgstr "" + +#: order/models.py:987 +msgid "Only an open order can be marked as complete" +msgstr "" + +#: order/models.py:991 templates/js/translated/sales_order.js:506 +msgid "Order cannot be completed as there are incomplete shipments" +msgstr "" + +#: order/models.py:996 +msgid "Order cannot be completed as there are incomplete line items" +msgstr "" + +#: order/models.py:1243 +msgid "Item quantity" +msgstr "" + +#: order/models.py:1260 +msgid "Line item reference" +msgstr "" + +#: order/models.py:1267 +msgid "Line item notes" +msgstr "" + +#: order/models.py:1279 +msgid "Target date for this line item (leave blank to use the target date from the order)" +msgstr "" + +#: order/models.py:1300 +msgid "Line item description (optional)" +msgstr "" + +#: order/models.py:1306 +msgid "Context" +msgstr "" + +#: order/models.py:1307 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:1317 +msgid "Unit price" +msgstr "" + +#: order/models.py:1350 +msgid "Supplier part must match supplier" +msgstr "" + +#: order/models.py:1357 +msgid "deleted" +msgstr "" + +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 +msgid "Order" +msgstr "" + +#: order/models.py:1385 +msgid "Supplier part" +msgstr "" + +#: order/models.py:1392 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:1302 +#: templates/js/translated/purchase_order.js:2166 +#: templates/js/translated/return_order.js:764 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 +msgid "Received" +msgstr "" + +#: order/models.py:1393 +msgid "Number of items received" +msgstr "" + +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 +msgid "Purchase Price" +msgstr "" + +#: order/models.py:1402 +msgid "Unit purchase price" +msgstr "" + +#: order/models.py:1417 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:1495 +msgid "Virtual part cannot be assigned to a sales order" +msgstr "" + +#: order/models.py:1500 +msgid "Only salable parts can be assigned to a sales order" +msgstr "" + +#: order/models.py:1526 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 +msgid "Sale Price" +msgstr "" + +#: order/models.py:1527 +msgid "Unit sale price" +msgstr "" + +#: order/models.py:1537 +msgid "Shipped quantity" +msgstr "" + +#: order/models.py:1629 +msgid "Date of shipment" +msgstr "" + +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 +msgid "Delivery Date" +msgstr "" + +#: order/models.py:1636 +msgid "Date of delivery of shipment" +msgstr "" + +#: order/models.py:1644 +msgid "Checked By" +msgstr "" + +#: order/models.py:1645 +msgid "User who checked this shipment" +msgstr "" + +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 +msgid "Shipment" +msgstr "" + +#: order/models.py:1653 +msgid "Shipment number" +msgstr "" + +#: order/models.py:1661 +msgid "Tracking Number" +msgstr "" + +#: order/models.py:1662 +msgid "Shipment tracking information" +msgstr "" + +#: order/models.py:1669 +msgid "Invoice Number" +msgstr "" + +#: order/models.py:1670 +msgid "Reference number for associated invoice" +msgstr "" + +#: order/models.py:1690 +msgid "Shipment has already been sent" +msgstr "" + +#: order/models.py:1693 +msgid "Shipment has no allocated stock items" +msgstr "" + +#: order/models.py:1809 order/models.py:1811 +msgid "Stock item has not been assigned" +msgstr "" + +#: order/models.py:1818 +msgid "Cannot allocate stock item to a line with a different part" +msgstr "" + +#: order/models.py:1821 +msgid "Cannot allocate stock to a line without a part" +msgstr "" + +#: order/models.py:1824 +msgid "Allocation quantity cannot exceed stock quantity" +msgstr "" + +#: order/models.py:1843 order/serializers.py:1176 +msgid "Quantity must be 1 for serialized stock item" +msgstr "" + +#: order/models.py:1846 +msgid "Sales order does not match shipment" +msgstr "" + +#: order/models.py:1847 plugin/base/barcodes/api.py:481 +msgid "Shipment does not match sales order" +msgstr "" + +#: order/models.py:1855 +msgid "Line" +msgstr "" + +#: order/models.py:1864 +msgid "Sales order shipment reference" +msgstr "" + +#: order/models.py:1877 order/models.py:2182 +#: templates/js/translated/return_order.js:722 +msgid "Item" +msgstr "" + +#: order/models.py:1878 +msgid "Select stock item to allocate" +msgstr "" + +#: order/models.py:1887 +msgid "Enter stock allocation quantity" +msgstr "" + +#: order/models.py:1964 +msgid "Return Order reference" +msgstr "" + +#: order/models.py:1976 +msgid "Company from which items are being returned" +msgstr "" + +#: order/models.py:1988 +msgid "Return order status" +msgstr "" + +#: order/models.py:2167 +msgid "Only serialized items can be assigned to a Return Order" +msgstr "" + +#: order/models.py:2183 +msgid "Select item to return from customer" +msgstr "" + +#: order/models.py:2189 +msgid "Received Date" +msgstr "" + +#: order/models.py:2190 +msgid "The date this this return item was received" +msgstr "" + +#: order/models.py:2201 templates/js/translated/return_order.js:733 +#: templates/js/translated/table_filters.js:123 +msgid "Outcome" +msgstr "" + +#: order/models.py:2202 +msgid "Outcome for this line item" +msgstr "" + +#: order/models.py:2209 +msgid "Cost associated with return or repair for this line item" +msgstr "" + +#: order/serializers.py:266 +msgid "Order cannot be cancelled" +msgstr "" + +#: order/serializers.py:281 order/serializers.py:1192 +msgid "Allow order to be closed with incomplete line items" +msgstr "" + +#: order/serializers.py:291 order/serializers.py:1202 +msgid "Order has incomplete line items" +msgstr "" + +#: order/serializers.py:402 +msgid "Order is not open" +msgstr "" + +#: order/serializers.py:427 +msgid "Purchase price currency" +msgstr "" + +#: order/serializers.py:445 +msgid "Supplier part must be specified" +msgstr "" + +#: order/serializers.py:448 +msgid "Purchase order must be specified" +msgstr "" + +#: order/serializers.py:456 +msgid "Supplier must match purchase order" +msgstr "" + +#: order/serializers.py:457 +msgid "Purchase order must match supplier" +msgstr "" + +#: order/serializers.py:496 order/serializers.py:1270 +msgid "Line Item" +msgstr "" + +#: order/serializers.py:502 +msgid "Line item does not match purchase order" +msgstr "" + +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 +msgid "Select destination location for received items" +msgstr "" + +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 +msgid "Enter batch code for incoming stock items" +msgstr "" + +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 +msgid "Enter serial numbers for incoming stock items" +msgstr "" + +#: order/serializers.py:547 templates/js/translated/barcode.js:52 +msgid "Barcode" +msgstr "" + +#: order/serializers.py:548 +msgid "Scanned barcode" +msgstr "" + +#: order/serializers.py:564 +msgid "Barcode is already in use" +msgstr "" + +#: order/serializers.py:588 +msgid "An integer quantity must be provided for trackable parts" +msgstr "" + +#: order/serializers.py:636 order/serializers.py:1641 +msgid "Line items must be provided" +msgstr "" + +#: order/serializers.py:652 +msgid "Destination location must be specified" +msgstr "" + +#: order/serializers.py:663 +msgid "Supplied barcode values must be unique" +msgstr "" + +#: order/serializers.py:1020 +msgid "Sale price currency" +msgstr "" + +#: order/serializers.py:1080 +msgid "No shipment details provided" +msgstr "" + +#: order/serializers.py:1140 order/serializers.py:1279 +msgid "Line item is not associated with this order" +msgstr "" + +#: order/serializers.py:1159 +msgid "Quantity must be positive" +msgstr "" + +#: order/serializers.py:1289 +msgid "Enter serial numbers to allocate" +msgstr "" + +#: order/serializers.py:1311 order/serializers.py:1417 +msgid "Shipment has already been shipped" +msgstr "" + +#: order/serializers.py:1314 order/serializers.py:1420 +msgid "Shipment is not associated with this order" +msgstr "" + +#: order/serializers.py:1361 +msgid "No match found for the following serial numbers" +msgstr "" + +#: order/serializers.py:1368 +msgid "The following serial numbers are already allocated" +msgstr "" + +#: order/serializers.py:1595 +msgid "Return order line item" +msgstr "" + +#: order/serializers.py:1601 +msgid "Line item does not match return order" +msgstr "" + +#: order/serializers.py:1604 +msgid "Line item has already been received" +msgstr "" + +#: order/serializers.py:1633 +msgid "Items can only be received against orders which are in progress" +msgstr "" + +#: order/serializers.py:1711 +msgid "Line price currency" +msgstr "" + +#: order/tasks.py:25 +msgid "Overdue Purchase Order" +msgstr "" + +#: order/tasks.py:30 +#, python-brace-format +msgid "Purchase order {po} is now overdue" +msgstr "" + +#: order/tasks.py:75 +msgid "Overdue Sales Order" +msgstr "" + +#: order/tasks.py:80 +#, python-brace-format +msgid "Sales order {so} is now overdue" +msgstr "" + +#: order/templates/order/order_base.html:51 +msgid "Print purchase order report" +msgstr "" + +#: order/templates/order/order_base.html:53 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 +msgid "Export order to file" +msgstr "" + +#: order/templates/order/order_base.html:59 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 +msgid "Order actions" +msgstr "" + +#: order/templates/order/order_base.html:64 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 +msgid "Edit order" +msgstr "" + +#: order/templates/order/order_base.html:68 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 +msgid "Cancel order" +msgstr "" + +#: order/templates/order/order_base.html:73 +msgid "Duplicate order" +msgstr "" + +#: order/templates/order/order_base.html:79 +#: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 +#: order/templates/order/return_order_base.html:83 +#: order/templates/order/sales_order_base.html:83 +#: order/templates/order/sales_order_base.html:84 +msgid "Issue Order" +msgstr "" + +#: order/templates/order/order_base.html:83 +#: order/templates/order/return_order_base.html:86 +msgid "Mark order as complete" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:91 +msgid "Supplier part thumbnail" +msgstr "" + +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 +msgid "Order Reference" +msgstr "" + +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 +msgid "Order Status" +msgstr "" + +#: order/templates/order/order_base.html:141 +msgid "No suppplier information available" +msgstr "" + +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 +msgid "Completed Line Items" +msgstr "" + +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 +msgid "Incomplete" +msgstr "" + +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 +#: report/templates/report/inventree_build_order_base.html:121 +msgid "Issued" +msgstr "" + +#: order/templates/order/order_base.html:224 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 +msgid "Total cost could not be calculated" +msgstr "" + +#: order/templates/order/order_base.html:318 +msgid "Purchase Order QR Code" +msgstr "" + +#: order/templates/order/order_base.html:330 +msgid "Link Barcode to Purchase Order" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:9 +#: part/templates/part/import_wizard/ajax_match_fields.html:9 +#: part/templates/part/import_wizard/match_fields.html:9 +#: templates/patterns/wizard/match_fields.html:8 +msgid "Missing selections for the following required columns" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:20 +#: part/templates/part/import_wizard/ajax_match_fields.html:20 +#: part/templates/part/import_wizard/match_fields.html:20 +#: templates/patterns/wizard/match_fields.html:19 +msgid "Duplicate selections found, see below. Fix them then retry submitting." +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:29 +#: order/templates/order/order_wizard/match_parts.html:21 +#: part/templates/part/import_wizard/match_fields.html:29 +#: part/templates/part/import_wizard/match_references.html:21 +#: templates/patterns/wizard/match_fields.html:28 +msgid "Submit Selections" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:35 +#: part/templates/part/import_wizard/ajax_match_fields.html:28 +#: part/templates/part/import_wizard/match_fields.html:35 +#: templates/patterns/wizard/match_fields.html:34 +msgid "File Fields" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:42 +#: part/templates/part/import_wizard/ajax_match_fields.html:35 +#: part/templates/part/import_wizard/match_fields.html:42 +#: templates/patterns/wizard/match_fields.html:41 +msgid "Remove column" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:60 +#: part/templates/part/import_wizard/ajax_match_fields.html:53 +#: part/templates/part/import_wizard/match_fields.html:60 +#: templates/patterns/wizard/match_fields.html:59 +msgid "Duplicate selection" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:71 +#: order/templates/order/order_wizard/match_parts.html:52 +#: part/templates/part/import_wizard/ajax_match_fields.html:64 +#: 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/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/purchase_order.js:706 +#: templates/js/translated/purchase_order.js:1232 +#: templates/js/translated/return_order.js:506 +#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 +#: templates/patterns/wizard/match_fields.html:70 +msgid "Remove row" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:12 +#: part/templates/part/import_wizard/ajax_match_references.html:12 +#: part/templates/part/import_wizard/match_references.html:12 +msgid "Errors exist in the submitted data" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:28 +#: part/templates/part/import_wizard/ajax_match_references.html:21 +#: part/templates/part/import_wizard/match_references.html:28 +msgid "Row" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:29 +msgid "Select Supplier Part" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:8 +msgid "Return to Orders" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:13 +msgid "Upload File for Purchase Order" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:14 +msgid "Order is already processed. Files cannot be uploaded." +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:27 +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: part/templates/part/import_wizard/part_upload.html:26 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + +#: order/templates/order/po_sidebar.html:5 +#: order/templates/order/return_order_detail.html:18 +#: order/templates/order/so_sidebar.html:5 +#: report/templates/report/inventree_po_report_base.html:22 +#: report/templates/report/inventree_return_order_report_base.html:19 +#: report/templates/report/inventree_so_report_base.html:22 +msgid "Line Items" +msgstr "" + +#: order/templates/order/po_sidebar.html:7 +msgid "Received Stock" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:18 +msgid "Purchase Order Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:27 +#: order/templates/order/return_order_detail.html:24 +#: order/templates/order/sales_order_detail.html:24 +#: templates/js/translated/purchase_order.js:433 +#: templates/js/translated/return_order.js:459 +#: templates/js/translated/sales_order.js:237 +msgid "Add Line Item" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:31 +#: order/templates/order/purchase_order_detail.html:32 +#: order/templates/order/return_order_detail.html:28 +#: order/templates/order/return_order_detail.html:29 +msgid "Receive Line Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:50 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:74 +msgid "Received Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 +msgid "Order Notes" +msgstr "" + +#: order/templates/order/return_order_base.html:18 +#: order/templates/order/sales_order_base.html:18 +msgid "Customer logo thumbnail" +msgstr "" + +#: order/templates/order/return_order_base.html:60 +msgid "Print return order report" +msgstr "" + +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 +msgid "Print packing list" +msgstr "" + +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:309 +#: templates/js/translated/sales_order.js:797 +msgid "Customer Reference" +msgstr "" + +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:99 +#: part/templates/part/part_pricing.html:114 +#: templates/js/translated/part.js:1072 +#: templates/js/translated/purchase_order.js:1749 +#: templates/js/translated/return_order.js:381 +#: templates/js/translated/sales_order.js:855 +msgid "Total Cost" +msgstr "" + +#: order/templates/order/return_order_base.html:263 +msgid "Return Order QR Code" +msgstr "" + +#: order/templates/order/return_order_base.html:275 +msgid "Link Barcode to Return Order" +msgstr "" + +#: order/templates/order/return_order_sidebar.html:5 +msgid "Order Details" +msgstr "" + +#: order/templates/order/sales_order_base.html:60 +msgid "Print sales order report" +msgstr "" + +#: order/templates/order/sales_order_base.html:88 +#: order/templates/order/sales_order_base.html:89 +msgid "Ship Items" +msgstr "" + +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:484 +msgid "Complete Sales Order" +msgstr "" + +#: order/templates/order/sales_order_base.html:131 +msgid "This Sales Order has not been fully allocated" +msgstr "" + +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 +#: order/templates/order/so_sidebar.html:11 +msgid "Completed Shipments" +msgstr "" + +#: order/templates/order/sales_order_base.html:312 +msgid "Sales Order QR Code" +msgstr "" + +#: order/templates/order/sales_order_base.html:324 +msgid "Link Barcode to Sales Order" +msgstr "" + +#: order/templates/order/sales_order_detail.html:18 +msgid "Sales Order Items" +msgstr "" + +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 +msgid "Pending Shipments" +msgstr "" + +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +msgid "Actions" +msgstr "" + +#: order/templates/order/sales_order_detail.html:80 +msgid "New Shipment" +msgstr "" + +#: order/views.py:120 +msgid "Match Supplier Parts" +msgstr "" + +#: order/views.py:406 +msgid "Sales order not found" +msgstr "" + +#: order/views.py:412 +msgid "Price not found" +msgstr "" + +#: order/views.py:415 +#, python-brace-format +msgid "Updated {part} unit-price to {price}" +msgstr "" + +#: order/views.py:421 +#, python-brace-format +msgid "Updated {part} unit-price to {price} and quantity to {qty}" +msgstr "" + +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 +msgid "Part ID" +msgstr "" + +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 +msgid "Part Name" +msgstr "" + +#: part/admin.py:45 part/stocktake.py:220 +msgid "Part Description" +msgstr "" + +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 +#: templates/js/translated/stock.js:2006 +msgid "IPN" +msgstr "" + +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 +#: templates/js/translated/part.js:2347 +msgid "Revision" +msgstr "" + +#: part/admin.py:53 part/admin.py:317 part/models.py:881 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 +msgid "Keywords" +msgstr "" + +#: part/admin.py:60 +msgid "Part Image" +msgstr "" + +#: part/admin.py:63 part/admin.py:300 part/stocktake.py:221 +msgid "Category ID" +msgstr "" + +#: part/admin.py:67 part/admin.py:302 part/stocktake.py:222 +msgid "Category Name" +msgstr "" + +#: part/admin.py:71 part/admin.py:314 +msgid "Default Location ID" +msgstr "" + +#: part/admin.py:76 +msgid "Default Supplier ID" +msgstr "" + +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 +msgid "Variant Of" +msgstr "" + +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 +msgid "Minimum Stock" +msgstr "" + +#: part/admin.py:126 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 +msgid "In Stock" +msgstr "" + +#: part/admin.py:138 part/templates/part/part_sidebar.html:27 +msgid "Used In" +msgstr "" + +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 +#: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 +msgid "Building" +msgstr "" + +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 +#: templates/js/translated/part.js:969 +msgid "Minimum Cost" +msgstr "" + +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 +#: templates/js/translated/part.js:979 +msgid "Maximum Cost" +msgstr "" + +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 +msgid "Parent ID" +msgstr "" + +#: part/admin.py:310 part/admin.py:399 stock/admin.py:62 +msgid "Parent Name" +msgstr "" + +#: part/admin.py:318 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 +msgid "Category Path" +msgstr "" + +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 +#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 +#: part/templates/part/category.html:141 part/templates/part/category.html:161 +#: part/templates/part/category_sidebar.html:9 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:190 +msgid "Parts" +msgstr "" + +#: part/admin.py:383 +msgid "BOM Level" +msgstr "" + +#: part/admin.py:386 +msgid "BOM Item ID" +msgstr "" + +#: part/admin.py:396 +msgid "Parent IPN" +msgstr "" + +#: part/admin.py:407 part/models.py:3869 +msgid "Part IPN" +msgstr "" + +#: part/admin.py:420 part/serializers.py:1190 +#: templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 +msgid "Minimum Price" +msgstr "" + +#: part/admin.py:425 part/serializers.py:1205 +#: templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 +msgid "Maximum Price" +msgstr "" + +#: part/api.py:534 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:552 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:568 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:652 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:799 +msgid "Valid" +msgstr "" + +#: part/api.py:800 +msgid "Validate entire Bill of Materials" +msgstr "" + +#: part/api.py:806 +msgid "This option must be selected" +msgstr "" + +#: part/bom.py:170 part/models.py:100 part/models.py:934 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 +msgid "Default Location" +msgstr "" + +#: part/bom.py:171 templates/email/low_stock_notification.html:16 +msgid "Total Stock" +msgstr "" + +#: part/forms.py:49 +msgid "Input quantity for price calculation" +msgstr "" + +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 +#: part/templates/part/part_app_base.html:10 +msgid "Part Category" +msgstr "" + +#: part/models.py:82 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:189 +msgid "Part Categories" +msgstr "" + +#: part/models.py:101 +msgid "Default location for parts in this category" +msgstr "" + +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 +msgid "Structural" +msgstr "" + +#: part/models.py:108 +msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." +msgstr "" + +#: part/models.py:117 +msgid "Default keywords" +msgstr "" + +#: part/models.py:118 +msgid "Default keywords for parts in this category" +msgstr "" + +#: part/models.py:124 stock/models.py:88 stock/models.py:147 +#: templates/InvenTree/settings/settings_staff_js.html:456 +msgid "Icon" +msgstr "" + +#: part/models.py:125 stock/models.py:148 +msgid "Icon (optional)" +msgstr "" + +#: part/models.py:145 +msgid "You cannot make this part category structural because some parts are already assigned to it!" +msgstr "" + +#: part/models.py:481 +msgid "Invalid choice for parent part" +msgstr "" + +#: part/models.py:529 part/models.py:536 +#, python-brace-format +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" + +#: part/models.py:548 +#, python-brace-format +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" + +#: part/models.py:613 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:693 +msgid "Stock item with this serial number already exists" +msgstr "" + +#: part/models.py:796 +msgid "Duplicate IPN not allowed in part settings" +msgstr "" + +#: part/models.py:806 +msgid "Part with this Name, IPN and Revision already exists." +msgstr "" + +#: part/models.py:821 +msgid "Parts cannot be assigned to structural part categories!" +msgstr "" + +#: part/models.py:850 part/models.py:3868 +msgid "Part name" +msgstr "" + +#: part/models.py:855 +msgid "Is Template" +msgstr "" + +#: part/models.py:856 +msgid "Is this part a template part?" +msgstr "" + +#: part/models.py:866 +msgid "Is this part a variant of another part?" +msgstr "" + +#: part/models.py:874 +msgid "Part description (optional)" +msgstr "" + +#: part/models.py:882 +msgid "Part keywords to improve visibility in search results" +msgstr "" + +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 +#: templates/InvenTree/settings/settings_staff_js.html:300 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2377 +msgid "Category" +msgstr "" + +#: part/models.py:892 +msgid "Part category" +msgstr "" + +#: part/models.py:900 +msgid "Internal Part Number" +msgstr "" + +#: part/models.py:907 +msgid "Part revision or version number" +msgstr "" + +#: part/models.py:932 +msgid "Where is this item normally stored?" +msgstr "" + +#: part/models.py:978 part/templates/part/part_base.html:376 +msgid "Default Supplier" +msgstr "" + +#: part/models.py:979 +msgid "Default supplier part" +msgstr "" + +#: part/models.py:986 +msgid "Default Expiry" +msgstr "" + +#: part/models.py:987 +msgid "Expiry time (in days) for stock items of this part" +msgstr "" + +#: part/models.py:996 +msgid "Minimum allowed stock level" +msgstr "" + +#: part/models.py:1005 +msgid "Units of measure for this part" +msgstr "" + +#: part/models.py:1012 +msgid "Can this part be built from other parts?" +msgstr "" + +#: part/models.py:1018 +msgid "Can this part be used to build other parts?" +msgstr "" + +#: part/models.py:1024 +msgid "Does this part have tracking for unique items?" +msgstr "" + +#: part/models.py:1030 +msgid "Can this part be purchased from external suppliers?" +msgstr "" + +#: part/models.py:1036 +msgid "Can this part be sold to customers?" +msgstr "" + +#: part/models.py:1040 +msgid "Is this part active?" +msgstr "" + +#: part/models.py:1046 +msgid "Is this a virtual part, such as a software product or license?" +msgstr "" + +#: part/models.py:1052 +msgid "BOM checksum" +msgstr "" + +#: part/models.py:1053 +msgid "Stored BOM checksum" +msgstr "" + +#: part/models.py:1061 +msgid "BOM checked by" +msgstr "" + +#: part/models.py:1066 +msgid "BOM checked date" +msgstr "" + +#: part/models.py:1082 +msgid "Creation User" +msgstr "" + +#: part/models.py:1092 +msgid "Owner responsible for this part" +msgstr "" + +#: part/models.py:1097 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2471 +msgid "Last Stocktake" +msgstr "" + +#: part/models.py:1970 +msgid "Sell multiple" +msgstr "" + +#: part/models.py:2979 +msgid "Currency used to cache pricing calculations" +msgstr "" + +#: part/models.py:2995 +msgid "Minimum BOM Cost" +msgstr "" + +#: part/models.py:2996 +msgid "Minimum cost of component parts" +msgstr "" + +#: part/models.py:3002 +msgid "Maximum BOM Cost" +msgstr "" + +#: part/models.py:3003 +msgid "Maximum cost of component parts" +msgstr "" + +#: part/models.py:3009 +msgid "Minimum Purchase Cost" +msgstr "" + +#: part/models.py:3010 +msgid "Minimum historical purchase cost" +msgstr "" + +#: part/models.py:3016 +msgid "Maximum Purchase Cost" +msgstr "" + +#: part/models.py:3017 +msgid "Maximum historical purchase cost" +msgstr "" + +#: part/models.py:3023 +msgid "Minimum Internal Price" +msgstr "" + +#: part/models.py:3024 +msgid "Minimum cost based on internal price breaks" +msgstr "" + +#: part/models.py:3030 +msgid "Maximum Internal Price" +msgstr "" + +#: part/models.py:3031 +msgid "Maximum cost based on internal price breaks" +msgstr "" + +#: part/models.py:3037 +msgid "Minimum Supplier Price" +msgstr "" + +#: part/models.py:3038 +msgid "Minimum price of part from external suppliers" +msgstr "" + +#: part/models.py:3044 +msgid "Maximum Supplier Price" +msgstr "" + +#: part/models.py:3045 +msgid "Maximum price of part from external suppliers" +msgstr "" + +#: part/models.py:3051 +msgid "Minimum Variant Cost" +msgstr "" + +#: part/models.py:3052 +msgid "Calculated minimum cost of variant parts" +msgstr "" + +#: part/models.py:3058 +msgid "Maximum Variant Cost" +msgstr "" + +#: part/models.py:3059 +msgid "Calculated maximum cost of variant parts" +msgstr "" + +#: part/models.py:3066 +msgid "Override minimum cost" +msgstr "" + +#: part/models.py:3073 +msgid "Override maximum cost" +msgstr "" + +#: part/models.py:3080 +msgid "Calculated overall minimum cost" +msgstr "" + +#: part/models.py:3087 +msgid "Calculated overall maximum cost" +msgstr "" + +#: part/models.py:3093 +msgid "Minimum Sale Price" +msgstr "" + +#: part/models.py:3094 +msgid "Minimum sale price based on price breaks" +msgstr "" + +#: part/models.py:3100 +msgid "Maximum Sale Price" +msgstr "" + +#: part/models.py:3101 +msgid "Maximum sale price based on price breaks" +msgstr "" + +#: part/models.py:3107 +msgid "Minimum Sale Cost" +msgstr "" + +#: part/models.py:3108 +msgid "Minimum historical sale price" +msgstr "" + +#: part/models.py:3114 +msgid "Maximum Sale Cost" +msgstr "" + +#: part/models.py:3115 +msgid "Maximum historical sale price" +msgstr "" + +#: part/models.py:3134 +msgid "Part for stocktake" +msgstr "" + +#: part/models.py:3139 +msgid "Item Count" +msgstr "" + +#: part/models.py:3140 +msgid "Number of individual stock entries at time of stocktake" +msgstr "" + +#: part/models.py:3148 +msgid "Total available stock at time of stocktake" +msgstr "" + +#: part/models.py:3152 part/models.py:3235 +#: part/templates/part/part_scheduling.html:13 +#: report/templates/report/inventree_test_report_base.html:106 +#: templates/InvenTree/settings/plugin_settings.html:37 +#: templates/InvenTree/settings/settings_staff_js.html:540 +#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1728 +#: templates/js/translated/stock.js:2792 +msgid "Date" +msgstr "" + +#: part/models.py:3153 +msgid "Date stocktake was performed" +msgstr "" + +#: part/models.py:3161 +msgid "Additional notes" +msgstr "" + +#: part/models.py:3171 +msgid "User who performed this stocktake" +msgstr "" + +#: part/models.py:3177 +msgid "Minimum Stock Cost" +msgstr "" + +#: part/models.py:3178 +msgid "Estimated minimum cost of stock on hand" +msgstr "" + +#: part/models.py:3184 +msgid "Maximum Stock Cost" +msgstr "" + +#: part/models.py:3185 +msgid "Estimated maximum cost of stock on hand" +msgstr "" + +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 +msgid "Report" +msgstr "" + +#: part/models.py:3242 +msgid "Stocktake report file (generated internally)" +msgstr "" + +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 +msgid "Part Count" +msgstr "" + +#: part/models.py:3248 +msgid "Number of parts covered by stocktake" +msgstr "" + +#: part/models.py:3258 +msgid "User who requested this stocktake report" +msgstr "" + +#: part/models.py:3418 +msgid "Test templates can only be created for trackable parts" +msgstr "" + +#: part/models.py:3435 +msgid "Test with this name already exists for this part" +msgstr "" + +#: part/models.py:3456 templates/js/translated/part.js:2868 +msgid "Test Name" +msgstr "" + +#: part/models.py:3457 +msgid "Enter a name for the test" +msgstr "" + +#: part/models.py:3464 +msgid "Test Description" +msgstr "" + +#: part/models.py:3465 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:3470 templates/js/translated/part.js:2877 +#: templates/js/translated/table_filters.js:477 +msgid "Required" +msgstr "" + +#: part/models.py:3471 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:3476 templates/js/translated/part.js:2885 +msgid "Requires Value" +msgstr "" + +#: part/models.py:3477 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:3482 templates/js/translated/part.js:2892 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:3484 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:3531 +msgid "Checkbox parameters cannot have units" +msgstr "" + +#: part/models.py:3536 +msgid "Checkbox parameters cannot have choices" +msgstr "" + +#: part/models.py:3556 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3573 +msgid "Parameter template name must be unique" +msgstr "" + +#: part/models.py:3588 +msgid "Parameter Name" +msgstr "" + +#: part/models.py:3595 +msgid "Physical units for this parameter" +msgstr "" + +#: part/models.py:3603 +msgid "Parameter description" +msgstr "" + +#: part/models.py:3609 templates/js/translated/part.js:1627 +#: templates/js/translated/table_filters.js:817 +msgid "Checkbox" +msgstr "" + +#: part/models.py:3610 +msgid "Is this parameter a checkbox?" +msgstr "" + +#: part/models.py:3615 templates/js/translated/part.js:1636 +msgid "Choices" +msgstr "" + +#: part/models.py:3616 +msgid "Valid choices for this parameter (comma-separated)" +msgstr "" + +#: part/models.py:3693 +msgid "Invalid choice for parameter value" +msgstr "" + +#: part/models.py:3736 +msgid "Parent Part" +msgstr "" + +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 +#: templates/InvenTree/settings/settings_staff_js.html:295 +msgid "Parameter Template" +msgstr "" + +#: part/models.py:3749 +msgid "Data" +msgstr "" + +#: part/models.py:3750 +msgid "Parameter Value" +msgstr "" + +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 +msgid "Default Value" +msgstr "" + +#: part/models.py:3828 +msgid "Default Parameter Value" +msgstr "" + +#: part/models.py:3866 +msgid "Part ID or part name" +msgstr "" + +#: part/models.py:3867 +msgid "Unique part ID value" +msgstr "" + +#: part/models.py:3869 +msgid "Part IPN value" +msgstr "" + +#: part/models.py:3870 +msgid "Level" +msgstr "" + +#: part/models.py:3870 +msgid "BOM level" +msgstr "" + +#: part/models.py:3960 +msgid "Select parent part" +msgstr "" + +#: part/models.py:3970 +msgid "Sub part" +msgstr "" + +#: part/models.py:3971 +msgid "Select part to be used in BOM" +msgstr "" + +#: part/models.py:3982 +msgid "BOM quantity for this BOM item" +msgstr "" + +#: part/models.py:3988 +msgid "This BOM item is optional" +msgstr "" + +#: part/models.py:3994 +msgid "This BOM item is consumable (it is not tracked in build orders)" +msgstr "" + +#: part/models.py:4001 part/templates/part/upload_bom.html:55 +msgid "Overage" +msgstr "" + +#: part/models.py:4002 +msgid "Estimated build wastage quantity (absolute or percentage)" +msgstr "" + +#: part/models.py:4009 +msgid "BOM item reference" +msgstr "" + +#: part/models.py:4017 +msgid "BOM item notes" +msgstr "" + +#: part/models.py:4023 +msgid "Checksum" +msgstr "" + +#: part/models.py:4024 +msgid "BOM line checksum" +msgstr "" + +#: part/models.py:4029 templates/js/translated/table_filters.js:174 +msgid "Validated" +msgstr "" + +#: part/models.py:4030 +msgid "This BOM item has been validated" +msgstr "" + +#: part/models.py:4035 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:1054 +#: templates/js/translated/table_filters.js:178 +#: templates/js/translated/table_filters.js:211 +msgid "Gets inherited" +msgstr "" + +#: part/models.py:4036 +msgid "This BOM item is inherited by BOMs for variant parts" +msgstr "" + +#: part/models.py:4041 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 +msgid "Allow Variants" +msgstr "" + +#: part/models.py:4042 +msgid "Stock items for variant parts can be used for this BOM item" +msgstr "" + +#: part/models.py:4127 stock/models.py:646 +msgid "Quantity must be integer value for trackable parts" +msgstr "" + +#: part/models.py:4137 part/models.py:4139 +msgid "Sub part must be specified" +msgstr "" + +#: part/models.py:4279 +msgid "BOM Item Substitute" +msgstr "" + +#: part/models.py:4300 +msgid "Substitute part cannot be the same as the master part" +msgstr "" + +#: part/models.py:4313 +msgid "Parent BOM item" +msgstr "" + +#: part/models.py:4321 +msgid "Substitute part" +msgstr "" + +#: part/models.py:4337 +msgid "Part 1" +msgstr "" + +#: part/models.py:4345 +msgid "Part 2" +msgstr "" + +#: part/models.py:4346 +msgid "Select Related Part" +msgstr "" + +#: part/models.py:4365 +msgid "Part relationship cannot be created between a part and itself" +msgstr "" + +#: part/models.py:4370 +msgid "Duplicate relationship already exists" +msgstr "" + +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:349 +msgid "No parts selected" +msgstr "" + +#: part/serializers.py:359 +msgid "Select category" +msgstr "" + +#: part/serializers.py:389 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:390 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:395 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:396 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:402 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:403 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:409 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:410 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:416 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:417 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:430 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:432 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:439 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:440 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:452 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:468 +msgid "Select manufacturer (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:478 +msgid "Manufacturer part number" +msgstr "" + +#: part/serializers.py:485 +msgid "Selected company is not a valid supplier" +msgstr "" + +#: part/serializers.py:494 +msgid "Selected company is not a valid manufacturer" +msgstr "" + +#: part/serializers.py:505 +msgid "Manufacturer part matching this MPN already exists" +msgstr "" + +#: part/serializers.py:512 +msgid "Supplier part matching this SKU already exists" +msgstr "" + +#: part/serializers.py:785 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:471 +msgid "Duplicate Part" +msgstr "" + +#: part/serializers.py:786 +msgid "Copy initial data from another Part" +msgstr "" + +#: part/serializers.py:792 templates/js/translated/part.js:102 +msgid "Initial Stock" +msgstr "" + +#: part/serializers.py:793 +msgid "Create Part with initial stock quantity" +msgstr "" + +#: part/serializers.py:799 +msgid "Supplier Information" +msgstr "" + +#: part/serializers.py:800 +msgid "Add initial supplier information for this part" +msgstr "" + +#: part/serializers.py:808 +msgid "Copy Category Parameters" +msgstr "" + +#: part/serializers.py:809 +msgid "Copy parameter templates from selected part category" +msgstr "" + +#: part/serializers.py:814 +msgid "Existing Image" +msgstr "" + +#: part/serializers.py:815 +msgid "Filename of an existing part image" +msgstr "" + +#: part/serializers.py:832 +msgid "Image file does not exist" +msgstr "" + +#: part/serializers.py:1038 +msgid "Limit stocktake report to a particular part, and any variant parts" +msgstr "" + +#: part/serializers.py:1048 +msgid "Limit stocktake report to a particular part category, and any child categories" +msgstr "" + +#: part/serializers.py:1058 +msgid "Limit stocktake report to a particular stock location, and any child locations" +msgstr "" + +#: part/serializers.py:1064 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:1065 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:1070 +msgid "Generate Report" +msgstr "" + +#: part/serializers.py:1071 +msgid "Generate report file containing calculated stocktake data" +msgstr "" + +#: part/serializers.py:1076 +msgid "Update Parts" +msgstr "" + +#: part/serializers.py:1077 +msgid "Update specified parts with calculated stocktake data" +msgstr "" + +#: part/serializers.py:1085 +msgid "Stocktake functionality is not enabled" +msgstr "" + +#: part/serializers.py:1191 +msgid "Override calculated value for minimum price" +msgstr "" + +#: part/serializers.py:1198 +msgid "Minimum price currency" +msgstr "" + +#: part/serializers.py:1206 +msgid "Override calculated value for maximum price" +msgstr "" + +#: part/serializers.py:1213 +msgid "Maximum price currency" +msgstr "" + +#: part/serializers.py:1242 +msgid "Update" +msgstr "" + +#: part/serializers.py:1243 +msgid "Update pricing for this part" +msgstr "" + +#: part/serializers.py:1266 +#, python-brace-format +msgid "Could not convert from provided currencies to {default_currency}" +msgstr "" + +#: part/serializers.py:1273 +msgid "Minimum price must not be greater than maximum price" +msgstr "" + +#: part/serializers.py:1276 +msgid "Maximum price must not be less than minimum price" +msgstr "" + +#: part/serializers.py:1602 +msgid "Select part to copy BOM from" +msgstr "" + +#: part/serializers.py:1610 +msgid "Remove Existing Data" +msgstr "" + +#: part/serializers.py:1611 +msgid "Remove existing BOM items before copying" +msgstr "" + +#: part/serializers.py:1616 +msgid "Include Inherited" +msgstr "" + +#: part/serializers.py:1617 +msgid "Include BOM items which are inherited from templated parts" +msgstr "" + +#: part/serializers.py:1622 +msgid "Skip Invalid Rows" +msgstr "" + +#: part/serializers.py:1623 +msgid "Enable this option to skip invalid rows" +msgstr "" + +#: part/serializers.py:1628 +msgid "Copy Substitute Parts" +msgstr "" + +#: part/serializers.py:1629 +msgid "Copy substitute parts when duplicate BOM items" +msgstr "" + +#: part/serializers.py:1663 +msgid "Clear Existing BOM" +msgstr "" + +#: part/serializers.py:1664 +msgid "Delete existing BOM items before uploading" +msgstr "" + +#: part/serializers.py:1694 +msgid "No part column specified" +msgstr "" + +#: part/serializers.py:1738 +msgid "Multiple matching parts found" +msgstr "" + +#: part/serializers.py:1741 +msgid "No matching part found" +msgstr "" + +#: part/serializers.py:1744 +msgid "Part is not designated as a component" +msgstr "" + +#: part/serializers.py:1753 +msgid "Quantity not provided" +msgstr "" + +#: part/serializers.py:1761 +msgid "Invalid quantity" +msgstr "" + +#: part/serializers.py:1782 +msgid "At least one BOM item is required" +msgstr "" + +#: part/stocktake.py:224 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: templates/js/translated/purchase_order.js:2081 +msgid "Total Quantity" +msgstr "" + +#: part/stocktake.py:225 +msgid "Total Cost Min" +msgstr "" + +#: part/stocktake.py:226 +msgid "Total Cost Max" +msgstr "" + +#: part/stocktake.py:284 +msgid "Stocktake Report Available" +msgstr "" + +#: part/stocktake.py:285 +msgid "A new stocktake report is available for download" +msgstr "" + +#: part/tasks.py:37 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:39 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + +#: part/templates/part/bom.html:6 +msgid "You do not have permission to edit the BOM." +msgstr "" + +#: part/templates/part/bom.html:15 +msgid "The BOM this part has been changed, and must be validated" +msgstr "" + +#: part/templates/part/bom.html:17 +#, python-format +msgid "This BOM was last checked by %(checker)s on %(check_date)s" +msgstr "" + +#: part/templates/part/bom.html:21 +msgid "This BOM has not been validated." +msgstr "" + +#: part/templates/part/category.html:35 +msgid "Perform stocktake for this part category" +msgstr "" + +#: part/templates/part/category.html:41 part/templates/part/category.html:45 +msgid "You are subscribed to notifications for this category" +msgstr "" + +#: part/templates/part/category.html:49 +msgid "Subscribe to notifications for this category" +msgstr "" + +#: part/templates/part/category.html:55 +msgid "Category Actions" +msgstr "" + +#: part/templates/part/category.html:60 +msgid "Edit category" +msgstr "" + +#: part/templates/part/category.html:61 +msgid "Edit Category" +msgstr "" + +#: part/templates/part/category.html:65 +msgid "Delete category" +msgstr "" + +#: part/templates/part/category.html:66 +msgid "Delete Category" +msgstr "" + +#: part/templates/part/category.html:102 +msgid "Top level part category" +msgstr "" + +#: part/templates/part/category.html:122 part/templates/part/category.html:207 +#: part/templates/part/category_sidebar.html:7 +msgid "Subcategories" +msgstr "" + +#: part/templates/part/category.html:127 +msgid "Parts (Including subcategories)" +msgstr "" + +#: part/templates/part/category.html:165 +msgid "Create new part" +msgstr "" + +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 +msgid "New Part" +msgstr "" + +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 +msgid "Part Parameters" +msgstr "" + +#: part/templates/part/category.html:211 +msgid "Create new part category" +msgstr "" + +#: part/templates/part/category.html:212 +msgid "New Category" +msgstr "" + +#: part/templates/part/category_sidebar.html:13 +msgid "Import Parts" +msgstr "" + +#: part/templates/part/copy_part.html:10 +#, python-format +msgid "Make a copy of part '%(full_name)s'." +msgstr "" + +#: part/templates/part/copy_part.html:14 +#: part/templates/part/create_part.html:11 +msgid "Possible Matching Parts" +msgstr "" + +#: part/templates/part/copy_part.html:15 +#: part/templates/part/create_part.html:12 +msgid "The new part may be a duplicate of these existing parts" +msgstr "" + +#: part/templates/part/create_part.html:17 +#, python-format +msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" +msgstr "" + +#: part/templates/part/detail.html:20 +msgid "Part Stock" +msgstr "" + +#: part/templates/part/detail.html:44 +msgid "Refresh scheduling data" +msgstr "" + +#: part/templates/part/detail.html:45 part/templates/part/prices.html:15 +#: templates/js/translated/tables.js:552 +msgid "Refresh" +msgstr "" + +#: part/templates/part/detail.html:66 +msgid "Add stocktake information" +msgstr "" + +#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:191 +msgid "Stocktake" +msgstr "" + +#: part/templates/part/detail.html:83 +msgid "Part Test Templates" +msgstr "" + +#: part/templates/part/detail.html:88 +msgid "Add Test Template" +msgstr "" + +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 +msgid "Sales Order Allocations" +msgstr "" + +#: part/templates/part/detail.html:156 +msgid "Part Notes" +msgstr "" + +#: part/templates/part/detail.html:171 +msgid "Part Variants" +msgstr "" + +#: part/templates/part/detail.html:175 +msgid "Create new variant" +msgstr "" + +#: part/templates/part/detail.html:176 +msgid "New Variant" +msgstr "" + +#: part/templates/part/detail.html:199 +msgid "Add new parameter" +msgstr "" + +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 +msgid "Related Parts" +msgstr "" + +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +msgid "Add Related" +msgstr "" + +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 +#: report/templates/report/inventree_bill_of_materials_report.html:100 +msgid "Bill of Materials" +msgstr "" + +#: part/templates/part/detail.html:260 +msgid "Export actions" +msgstr "" + +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 +msgid "Export BOM" +msgstr "" + +#: part/templates/part/detail.html:266 +msgid "Print BOM Report" +msgstr "" + +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 +msgid "Upload BOM" +msgstr "" + +#: part/templates/part/detail.html:278 +msgid "Validate BOM" +msgstr "" + +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +msgid "Add BOM Item" +msgstr "" + +#: part/templates/part/detail.html:297 +msgid "Assemblies" +msgstr "" + +#: part/templates/part/detail.html:313 +msgid "Part Builds" +msgstr "" + +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/detail.html:352 +msgid "Part Suppliers" +msgstr "" + +#: part/templates/part/detail.html:372 +msgid "Part Manufacturers" +msgstr "" + +#: part/templates/part/detail.html:659 +msgid "Related Part" +msgstr "" + +#: part/templates/part/detail.html:667 +msgid "Add Related Part" +msgstr "" + +#: part/templates/part/detail.html:752 +msgid "Add Test Result Template" +msgstr "" + +#: part/templates/part/import_wizard/ajax_part_upload.html:29 +#: part/templates/part/import_wizard/part_upload.html:14 +msgid "Insufficient privileges." +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:8 +msgid "Return to Parts" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:13 +msgid "Import Parts from File" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:31 +msgid "Requirements for part import" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:33 +msgid "The part import file must contain the required named columns as provided in the " +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:33 +msgid "Part Import Template" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:89 +msgid "Download Part Import Template" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:92 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 +msgid "Format" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:93 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 +#: templates/js/translated/order.js:130 +msgid "Select file format" +msgstr "" + +#: part/templates/part/part_app_base.html:12 +msgid "Part List" +msgstr "" + +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 +msgid "You are subscribed to notifications for this part" +msgstr "" + +#: part/templates/part/part_base.html:33 +msgid "Subscribe to notifications for this part" +msgstr "" + +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 +msgid "Print Label" +msgstr "" + +#: part/templates/part/part_base.html:58 +msgid "Show pricing information" +msgstr "" + +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 +msgid "Stock actions" +msgstr "" + +#: part/templates/part/part_base.html:70 +msgid "Count part stock" +msgstr "" + +#: part/templates/part/part_base.html:76 +msgid "Transfer part stock" +msgstr "" + +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 +msgid "Part actions" +msgstr "" + +#: part/templates/part/part_base.html:94 +msgid "Duplicate part" +msgstr "" + +#: part/templates/part/part_base.html:97 +msgid "Edit part" +msgstr "" + +#: part/templates/part/part_base.html:100 +msgid "Delete part" +msgstr "" + +#: part/templates/part/part_base.html:119 +msgid "Part is a template part (variants can be made from this part)" +msgstr "" + +#: part/templates/part/part_base.html:123 +msgid "Part can be assembled from other parts" +msgstr "" + +#: part/templates/part/part_base.html:127 +msgid "Part can be used in assemblies" +msgstr "" + +#: part/templates/part/part_base.html:131 +msgid "Part stock is tracked by serial number" +msgstr "" + +#: part/templates/part/part_base.html:135 +msgid "Part can be purchased from external suppliers" +msgstr "" + +#: part/templates/part/part_base.html:139 +msgid "Part can be sold to customers" +msgstr "" + +#: part/templates/part/part_base.html:145 +msgid "Part is not active" +msgstr "" + +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +msgid "Inactive" +msgstr "" + +#: part/templates/part/part_base.html:153 +msgid "Part is virtual (not a physical part)" +msgstr "" + +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 +msgid "Allocated to Build Orders" +msgstr "" + +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 +msgid "Allocated to Sales Orders" +msgstr "" + +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +msgid "Can Build" +msgstr "" + +#: part/templates/part/part_base.html:291 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2444 +#: templates/js/translated/pricing.js:391 +#: templates/js/translated/pricing.js:1054 +msgid "Price Range" +msgstr "" + +#: part/templates/part/part_base.html:352 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:444 +msgid "Part QR Code" +msgstr "" + +#: part/templates/part/part_base.html:461 +msgid "Link Barcode to Part" +msgstr "" + +#: part/templates/part/part_base.html:512 +msgid "Calculate" +msgstr "" + +#: part/templates/part/part_base.html:529 +msgid "Remove associated image from this part" +msgstr "" + +#: part/templates/part/part_base.html:580 +msgid "No matching images found" +msgstr "" + +#: part/templates/part/part_base.html:676 +msgid "Hide Part Details" +msgstr "" + +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:76 +#: part/templates/part/prices.html:227 templates/js/translated/pricing.js:485 +msgid "Supplier Pricing" +msgstr "" + +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:95 +#: part/templates/part/part_pricing.html:110 +msgid "Unit Cost" +msgstr "" + +#: part/templates/part/part_pricing.html:40 +msgid "No supplier pricing available" +msgstr "" + +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:90 +#: part/templates/part/prices.html:250 +msgid "BOM Pricing" +msgstr "" + +#: part/templates/part/part_pricing.html:66 +msgid "Unit Purchase Price" +msgstr "" + +#: part/templates/part/part_pricing.html:72 +msgid "Total Purchase Price" +msgstr "" + +#: part/templates/part/part_pricing.html:83 +msgid "No BOM pricing available" +msgstr "" + +#: part/templates/part/part_pricing.html:92 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/part_pricing.html:123 +msgid "No pricing information is available for this part." +msgstr "" + +#: part/templates/part/part_scheduling.html:14 +msgid "Scheduled Quantity" +msgstr "" + +#: part/templates/part/part_sidebar.html:11 +msgid "Variants" +msgstr "" + +#: part/templates/part/part_sidebar.html:14 +#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 +#: stock/templates/stock/stock_app_base.html:10 +#: templates/InvenTree/search.html:153 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 +msgid "Stock" +msgstr "" + +#: part/templates/part/part_sidebar.html:30 +#: templates/InvenTree/settings/sidebar.html:39 +msgid "Pricing" +msgstr "" + +#: part/templates/part/part_sidebar.html:44 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:54 +msgid "Test Templates" +msgstr "" + +#: part/templates/part/part_thumb.html:11 +msgid "Select from existing images" +msgstr "" + +#: part/templates/part/prices.html:11 +msgid "Pricing Overview" +msgstr "" + +#: part/templates/part/prices.html:14 +msgid "Refresh Part Pricing" +msgstr "" + +#: part/templates/part/prices.html:17 +msgid "Override Part Pricing" +msgstr "" + +#: part/templates/part/prices.html:18 +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "" + +#: part/templates/part/prices.html:28 stock/admin.py:247 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 +msgid "Last Updated" +msgstr "" + +#: part/templates/part/prices.html:37 part/templates/part/prices.html:127 +msgid "Price Category" +msgstr "" + +#: part/templates/part/prices.html:38 part/templates/part/prices.html:128 +msgid "Minimum" +msgstr "" + +#: part/templates/part/prices.html:39 part/templates/part/prices.html:129 +msgid "Maximum" +msgstr "" + +#: part/templates/part/prices.html:51 part/templates/part/prices.html:174 +msgid "Internal Pricing" +msgstr "" + +#: part/templates/part/prices.html:64 part/templates/part/prices.html:206 +msgid "Purchase History" +msgstr "" + +#: part/templates/part/prices.html:98 part/templates/part/prices.html:274 +msgid "Variant Pricing" +msgstr "" + +#: part/templates/part/prices.html:106 +msgid "Pricing Overrides" +msgstr "" + +#: part/templates/part/prices.html:113 +msgid "Overall Pricing" +msgstr "" + +#: part/templates/part/prices.html:149 part/templates/part/prices.html:326 +msgid "Sale History" +msgstr "" + +#: part/templates/part/prices.html:157 +msgid "Sale price data is not available for this part" +msgstr "" + +#: part/templates/part/prices.html:164 +msgid "Price range data is not available for this part." +msgstr "" + +#: part/templates/part/prices.html:175 part/templates/part/prices.html:207 +#: part/templates/part/prices.html:228 part/templates/part/prices.html:251 +#: part/templates/part/prices.html:275 part/templates/part/prices.html:298 +#: part/templates/part/prices.html:327 +msgid "Jump to overview" +msgstr "" + +#: part/templates/part/prices.html:180 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/prices.html:297 +msgid "Sale Pricing" +msgstr "" + +#: part/templates/part/prices.html:303 +msgid "Add Sell Price Break" +msgstr "" + +#: part/templates/part/pricing_javascript.html:24 +msgid "Update Pricing" +msgstr "" + +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:704 +#: templates/js/translated/part.js:2140 templates/js/translated/part.js:2142 +msgid "No Stock" +msgstr "" + +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 +msgid "Low Stock" +msgstr "" + +#: part/templates/part/upload_bom.html:8 +msgid "Return to BOM" +msgstr "" + +#: part/templates/part/upload_bom.html:13 +msgid "Upload Bill of Materials" +msgstr "" + +#: part/templates/part/upload_bom.html:19 +msgid "BOM upload requirements" +msgstr "" + +#: part/templates/part/upload_bom.html:23 +#: part/templates/part/upload_bom.html:90 +msgid "Upload BOM File" +msgstr "" + +#: part/templates/part/upload_bom.html:29 +msgid "Submit BOM Data" +msgstr "" + +#: part/templates/part/upload_bom.html:37 +msgid "Requirements for BOM upload" +msgstr "" + +#: part/templates/part/upload_bom.html:39 +msgid "The BOM file must contain the required named columns as provided in the " +msgstr "" + +#: part/templates/part/upload_bom.html:39 +msgid "BOM Upload Template" +msgstr "" + +#: part/templates/part/upload_bom.html:40 +msgid "Each part must already exist in the database" +msgstr "" + +#: part/templates/part/variant_part.html:9 +msgid "Create new part variant" +msgstr "" + +#: part/templates/part/variant_part.html:10 +msgid "Create a new variant part from this template" +msgstr "" + +#: part/views.py:111 +msgid "Match References" +msgstr "" + +#: part/views.py:275 +#, python-brace-format +msgid "Can't import part {new_part.name} because there is no category assigned" +msgstr "" + +#: part/views.py:425 +msgid "Select Part Image" +msgstr "" + +#: part/views.py:448 +msgid "Updated part image" +msgstr "" + +#: part/views.py:451 +msgid "Part image not found" +msgstr "" + +#: part/views.py:545 +msgid "Part Pricing" +msgstr "" + +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 +msgid "No action specified" +msgstr "" + +#: plugin/base/action/api.py:41 +msgid "No matching action found" +msgstr "" + +#: plugin/base/barcodes/api.py:124 plugin/base/barcodes/api.py:328 +#: plugin/base/barcodes/api.py:503 +msgid "No match found for barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:128 +msgid "Match found for barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:154 +#: templates/js/translated/purchase_order.js:1402 +msgid "Barcode matches existing item" +msgstr "" + +#: plugin/base/barcodes/api.py:293 +msgid "No matching part data found" +msgstr "" + +#: plugin/base/barcodes/api.py:310 +msgid "No matching supplier parts found" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Multiple matching supplier parts found" +msgstr "" + +#: plugin/base/barcodes/api.py:338 +msgid "Matched supplier part" +msgstr "" + +#: plugin/base/barcodes/api.py:387 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:424 +msgid "No match for supplier barcode" +msgstr "" + +#: plugin/base/barcodes/api.py:467 +msgid "Multiple matching line items found" +msgstr "" + +#: plugin/base/barcodes/api.py:470 +msgid "No matching line item found" +msgstr "" + +#: plugin/base/barcodes/api.py:508 plugin/base/barcodes/api.py:515 +msgid "Barcode does not match an existing stock item" +msgstr "" + +#: plugin/base/barcodes/api.py:526 +msgid "Stock item does not match line item" +msgstr "" + +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 +#: templates/js/translated/sales_order.js:1917 +msgid "Insufficient stock available" +msgstr "" + +#: plugin/base/barcodes/api.py:559 +msgid "Stock item allocated to sales order" +msgstr "" + +#: plugin/base/barcodes/api.py:563 +msgid "Not enough information" +msgstr "" + +#: plugin/base/barcodes/mixins.py:147 plugin/base/barcodes/mixins.py:179 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:197 +#, python-brace-format +msgid "Found multiple purchase orders matching '{order}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:201 +#, python-brace-format +msgid "No matching purchase order for '{order}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:207 +msgid "Purchase order does not match supplier" +msgstr "" + +#: plugin/base/barcodes/mixins.py:441 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:472 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:480 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/serializers.py:21 +msgid "Scanned barcode data" +msgstr "" + +#: plugin/base/barcodes/serializers.py:81 +msgid "Purchase Order to allocate items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:87 +msgid "Purchase order is not pending" +msgstr "" + +#: plugin/base/barcodes/serializers.py:105 +msgid "PurchaseOrder to receive items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:111 +msgid "Purchase order has not been placed" +msgstr "" + +#: plugin/base/barcodes/serializers.py:119 +msgid "Location to receive items into" +msgstr "" + +#: plugin/base/barcodes/serializers.py:125 +msgid "Cannot select a structural location" +msgstr "" + +#: plugin/base/barcodes/serializers.py:139 +msgid "Sales Order to allocate items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:145 +msgid "Sales order is not pending" +msgstr "" + +#: plugin/base/barcodes/serializers.py:153 +msgid "Sales order line item to allocate items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:160 +msgid "Sales order shipment to allocate items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:166 +msgid "Shipment has already been delivered" +msgstr "" + +#: plugin/base/barcodes/serializers.py:171 +msgid "Quantity to allocate" +msgstr "" + +#: plugin/base/label/label.py:39 +msgid "Label printing failed" +msgstr "" + +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:25 +msgid "InvenTree Barcodes" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:26 +msgid "Provides native support for barcodes" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:28 +#: plugin/builtin/integration/core_notifications.py:35 +#: plugin/builtin/integration/currency_exchange.py:21 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 +#: plugin/builtin/labels/label_sheet.py:63 +#: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 +#: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 +msgid "InvenTree contributors" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:34 +msgid "InvenTree Notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:36 +msgid "Integrated outgoing notification methods" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:41 +#: plugin/builtin/integration/core_notifications.py:80 +msgid "Enable email notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:42 +#: plugin/builtin/integration/core_notifications.py:81 +msgid "Allow sending of emails for event notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:47 +msgid "Enable slack notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:49 +msgid "Allow sending of slack channel messages for event notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:55 +msgid "Slack incoming webhook url" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:56 +msgid "URL that is used to send messages to a slack channel" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:164 +msgid "Open link" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:22 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Skip Labels" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Skip this number of labels when printing label sheets" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:42 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:48 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:60 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:61 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:94 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:128 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:16 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:17 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:26 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:18 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:19 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:27 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:16 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:17 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:25 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:18 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:19 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:27 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" +msgstr "" + +#: plugin/installer.py:245 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:251 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" +msgstr "" + +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" +msgstr "" + +#: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 +msgid "Plugin Configurations" +msgstr "" + +#: plugin/models.py:34 users/models.py:89 +msgid "Key" +msgstr "" + +#: plugin/models.py:34 +msgid "Key of plugin" +msgstr "" + +#: plugin/models.py:42 +msgid "PluginName of the plugin" +msgstr "" + +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 +msgid "Is the plugin active" +msgstr "" + +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:157 +msgid "Sample plugin" +msgstr "" + +#: plugin/models.py:165 +msgid "Builtin Plugin" +msgstr "" + +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:51 +msgid "Plugin" +msgstr "" + +#: plugin/models.py:244 +msgid "Method" +msgstr "" + +#: plugin/plugin.py:263 +msgid "No author found" +msgstr "" + +#: plugin/registry.py:584 +#, python-brace-format +msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" +msgstr "" + +#: plugin/registry.py:587 +#, python-brace-format +msgid "Plugin requires at least version {v}" +msgstr "" + +#: plugin/registry.py:589 +#, python-brace-format +msgid "Plugin requires at most version {v}" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Enable PO" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "Enable PO functionality in InvenTree interface" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:63 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:64 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:69 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:70 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:81 +msgid "Source URL" +msgstr "" + +#: plugin/serializers.py:83 +msgid "Source for the package - this can be a custom registry or a VCS path" +msgstr "" + +#: plugin/serializers.py:92 +msgid "Name for the Plugin Package - can also contain a version indicator" +msgstr "" + +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 +msgid "Confirm plugin installation" +msgstr "" + +#: plugin/serializers.py:108 +msgid "This will install this plugin now into the current instance. The instance will go into maintenance." +msgstr "" + +#: plugin/serializers.py:121 +msgid "Installation not confirmed" +msgstr "" + +#: plugin/serializers.py:123 +msgid "Either packagename of URL must be provided" +msgstr "" + +#: plugin/serializers.py:156 +msgid "Full reload" +msgstr "" + +#: plugin/serializers.py:157 +msgid "Perform a full reload of the plugin registry" +msgstr "" + +#: plugin/serializers.py:163 +msgid "Force reload" +msgstr "" + +#: plugin/serializers.py:165 +msgid "Force a reload of the plugin registry, even if it is already loaded" +msgstr "" + +#: plugin/serializers.py:172 +msgid "Collect plugins" +msgstr "" + +#: plugin/serializers.py:173 +msgid "Collect plugins and add them to the registry" +msgstr "" + +#: plugin/serializers.py:195 +msgid "Activate Plugin" +msgstr "" + +#: plugin/serializers.py:196 +msgid "Activate this plugin" +msgstr "" + +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + +#: report/api.py:175 +msgid "No valid objects provided to template" +msgstr "" + +#: report/api.py:214 report/api.py:251 +#, python-brace-format +msgid "Template file '{template}' is missing or does not exist" +msgstr "" + +#: report/api.py:331 +msgid "Test report" +msgstr "" + +#: report/helpers.py:15 +msgid "A4" +msgstr "" + +#: report/helpers.py:16 +msgid "A3" +msgstr "" + +#: report/helpers.py:17 +msgid "Legal" +msgstr "" + +#: report/helpers.py:18 +msgid "Letter" +msgstr "" + +#: report/models.py:175 +msgid "Template name" +msgstr "" + +#: report/models.py:181 +msgid "Report template file" +msgstr "" + +#: report/models.py:188 +msgid "Report template description" +msgstr "" + +#: report/models.py:194 +msgid "Report revision number (auto-increments)" +msgstr "" + +#: report/models.py:202 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:208 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:316 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:323 +msgid "Report template is enabled" +msgstr "" + +#: report/models.py:345 +msgid "StockItem query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:352 +msgid "Include Installed Tests" +msgstr "" + +#: report/models.py:354 +msgid "Include test results for stock items installed inside assembled item" +msgstr "" + +#: report/models.py:422 +msgid "Build Filters" +msgstr "" + +#: report/models.py:423 +msgid "Build query filters (comma-separated list of key=value pairs" +msgstr "" + +#: report/models.py:462 +msgid "Part Filters" +msgstr "" + +#: report/models.py:463 +msgid "Part query filters (comma-separated list of key=value pairs" +msgstr "" + +#: report/models.py:495 +msgid "Purchase order query filters" +msgstr "" + +#: report/models.py:531 +msgid "Sales order query filters" +msgstr "" + +#: report/models.py:567 +msgid "Return order query filters" +msgstr "" + +#: report/models.py:615 +msgid "Snippet" +msgstr "" + +#: report/models.py:616 +msgid "Report snippet file" +msgstr "" + +#: report/models.py:623 +msgid "Snippet file description" +msgstr "" + +#: report/models.py:660 +msgid "Asset" +msgstr "" + +#: report/models.py:661 +msgid "Report asset file" +msgstr "" + +#: report/models.py:668 +msgid "Asset file description" +msgstr "" + +#: report/models.py:690 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/templates/report/inventree_bill_of_materials_report.html:133 +msgid "Materials needed" +msgstr "" + +#: report/templates/report/inventree_build_order_base.html:146 +msgid "Required For" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:15 +msgid "Supplier was deleted" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:30 +#: report/templates/report/inventree_so_report_base.html:30 +#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 +#: templates/js/translated/pricing.js:596 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2112 +#: templates/js/translated/sales_order.js:1837 +msgid "Unit Price" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:55 +#: report/templates/report/inventree_return_order_report_base.html:48 +#: report/templates/report/inventree_so_report_base.html:55 +msgid "Extra Line Items" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:72 +#: report/templates/report/inventree_so_report_base.html:72 +#: templates/js/translated/purchase_order.js:2014 +#: templates/js/translated/sales_order.js:1806 +msgid "Total" +msgstr "" + +#: report/templates/report/inventree_return_order_report_base.html:25 +#: report/templates/report/inventree_test_report_base.html:88 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:540 +#: templates/js/translated/return_order.js:724 +#: templates/js/translated/sales_order.js:315 +#: templates/js/translated/sales_order.js:1611 +#: templates/js/translated/sales_order.js:1696 +#: templates/js/translated/stock.js:596 +msgid "Serial Number" +msgstr "" + +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:21 +msgid "Stock Item Test Report" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:97 +msgid "Test Results" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:102 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 +msgid "Test" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:103 +#: stock/models.py:2348 +msgid "Result" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:130 +msgid "Pass" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:132 +msgid "Fail" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:139 +msgid "No result (required)" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:141 +msgid "No result" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:154 +#: stock/templates/stock/stock_sidebar.html:16 +msgid "Installed Items" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:168 +#: stock/admin.py:162 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 +msgid "Serial" +msgstr "" + +#: report/templatetags/report.py:96 +msgid "Asset file does not exist" +msgstr "" + +#: report/templatetags/report.py:152 report/templatetags/report.py:217 +msgid "Image file not found" +msgstr "" + +#: report/templatetags/report.py:242 +msgid "part_image tag requires a Part instance" +msgstr "" + +#: report/templatetags/report.py:283 +msgid "company_image tag requires a Company instance" +msgstr "" + +#: stock/admin.py:52 stock/admin.py:172 +msgid "Location ID" +msgstr "" + +#: stock/admin.py:54 stock/admin.py:176 +msgid "Location Name" +msgstr "" + +#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 +msgid "Location Path" +msgstr "" + +#: stock/admin.py:149 +msgid "Stock Item ID" +msgstr "" + +#: stock/admin.py:168 +msgid "Status Code" +msgstr "" + +#: stock/admin.py:180 +msgid "Supplier Part ID" +msgstr "" + +#: stock/admin.py:185 +msgid "Supplier ID" +msgstr "" + +#: stock/admin.py:191 +msgid "Supplier Name" +msgstr "" + +#: stock/admin.py:196 +msgid "Customer ID" +msgstr "" + +#: stock/admin.py:201 stock/models.py:787 +#: stock/templates/stock/item_base.html:354 +msgid "Installed In" +msgstr "" + +#: stock/admin.py:206 +msgid "Build ID" +msgstr "" + +#: stock/admin.py:216 +msgid "Sales Order ID" +msgstr "" + +#: stock/admin.py:221 +msgid "Purchase Order ID" +msgstr "" + +#: stock/admin.py:236 +msgid "Review Needed" +msgstr "" + +#: stock/admin.py:241 +msgid "Delete on Deplete" +msgstr "" + +#: stock/admin.py:256 stock/models.py:881 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:113 +msgid "Expiry Date" +msgstr "" + +#: stock/api.py:540 templates/js/translated/table_filters.js:427 +msgid "External Location" +msgstr "" + +#: stock/api.py:725 +msgid "Part Tree" +msgstr "" + +#: stock/api.py:753 +msgid "Expiry date before" +msgstr "" + +#: stock/api.py:757 +msgid "Expiry date after" +msgstr "" + +#: stock/api.py:760 stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 +msgid "Stale" +msgstr "" + +#: stock/api.py:846 +msgid "Quantity is required" +msgstr "" + +#: stock/api.py:852 +msgid "Valid part must be supplied" +msgstr "" + +#: stock/api.py:883 +msgid "The given supplier part does not exist" +msgstr "" + +#: stock/api.py:893 +msgid "The supplier part has a pack size defined, but flag use_pack_size not set" +msgstr "" + +#: stock/api.py:924 +msgid "Serial numbers cannot be supplied for a non-trackable part" +msgstr "" + +#: stock/models.py:62 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:63 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:89 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:124 stock/models.py:769 +#: stock/templates/stock/location.html:17 +#: stock/templates/stock/stock_app_base.html:8 +msgid "Stock Location" +msgstr "" + +#: stock/models.py:125 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:192 +msgid "Stock Locations" +msgstr "" + +#: stock/models.py:157 stock/models.py:930 +#: stock/templates/stock/item_base.html:247 +msgid "Owner" +msgstr "" + +#: stock/models.py:158 stock/models.py:931 +msgid "Select Owner" +msgstr "" + +#: stock/models.py:166 +msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." +msgstr "" + +#: stock/models.py:173 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 +msgid "External" +msgstr "" + +#: stock/models.py:174 +msgid "This is an external stock location" +msgstr "" + +#: stock/models.py:180 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:184 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:253 +msgid "You cannot make this stock location structural because some stock items are already located into it!" +msgstr "" + +#: stock/models.py:623 +msgid "Stock items cannot be located into structural stock locations!" +msgstr "" + +#: stock/models.py:653 stock/serializers.py:223 +msgid "Stock item cannot be created for virtual parts" +msgstr "" + +#: stock/models.py:670 +#, python-brace-format +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" + +#: stock/models.py:680 stock/models.py:693 +msgid "Quantity must be 1 for item with a serial number" +msgstr "" + +#: stock/models.py:683 +msgid "Serial number cannot be set if quantity greater than 1" +msgstr "" + +#: stock/models.py:707 +msgid "Item cannot belong to itself" +msgstr "" + +#: stock/models.py:712 +msgid "Item must have a build reference if is_building=True" +msgstr "" + +#: stock/models.py:725 +msgid "Build reference does not point to the same part object" +msgstr "" + +#: stock/models.py:739 +msgid "Parent Stock Item" +msgstr "" + +#: stock/models.py:751 +msgid "Base part" +msgstr "" + +#: stock/models.py:761 +msgid "Select a matching supplier part for this stock item" +msgstr "" + +#: stock/models.py:773 +msgid "Where is this stock item located?" +msgstr "" + +#: stock/models.py:781 stock/serializers.py:1259 +msgid "Packaging this stock item is stored in" +msgstr "" + +#: stock/models.py:792 +msgid "Is this item installed in another item?" +msgstr "" + +#: stock/models.py:811 +msgid "Serial number for this item" +msgstr "" + +#: stock/models.py:825 stock/serializers.py:1242 +msgid "Batch code for this stock item" +msgstr "" + +#: stock/models.py:830 +msgid "Stock Quantity" +msgstr "" + +#: stock/models.py:840 +msgid "Source Build" +msgstr "" + +#: stock/models.py:843 +msgid "Build for this stock item" +msgstr "" + +#: stock/models.py:850 stock/templates/stock/item_base.html:363 +msgid "Consumed By" +msgstr "" + +#: stock/models.py:853 +msgid "Build order which consumed this stock item" +msgstr "" + +#: stock/models.py:862 +msgid "Source Purchase Order" +msgstr "" + +#: stock/models.py:866 +msgid "Purchase order for this stock item" +msgstr "" + +#: stock/models.py:872 +msgid "Destination Sales Order" +msgstr "" + +#: stock/models.py:883 +msgid "Expiry date for stock item. Stock will be considered expired after this date" +msgstr "" + +#: stock/models.py:901 +msgid "Delete on deplete" +msgstr "" + +#: stock/models.py:902 +msgid "Delete this Stock Item when stock is depleted" +msgstr "" + +#: stock/models.py:922 +msgid "Single unit purchase price at time of purchase" +msgstr "" + +#: stock/models.py:953 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1463 +msgid "Part is not set as trackable" +msgstr "" + +#: stock/models.py:1469 +msgid "Quantity must be integer" +msgstr "" + +#: stock/models.py:1477 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" + +#: stock/models.py:1483 +msgid "Serial numbers must be a list of integers" +msgstr "" + +#: stock/models.py:1488 +msgid "Quantity does not match serial numbers" +msgstr "" + +#: stock/models.py:1496 stock/serializers.py:455 +msgid "Serial numbers already exist" +msgstr "" + +#: stock/models.py:1563 +msgid "Stock item has been assigned to a sales order" +msgstr "" + +#: stock/models.py:1567 +msgid "Stock item is installed in another item" +msgstr "" + +#: stock/models.py:1570 +msgid "Stock item contains other items" +msgstr "" + +#: stock/models.py:1573 +msgid "Stock item has been assigned to a customer" +msgstr "" + +#: stock/models.py:1576 +msgid "Stock item is currently in production" +msgstr "" + +#: stock/models.py:1579 +msgid "Serialized stock cannot be merged" +msgstr "" + +#: stock/models.py:1586 stock/serializers.py:1148 +msgid "Duplicate stock items" +msgstr "" + +#: stock/models.py:1590 +msgid "Stock items must refer to the same part" +msgstr "" + +#: stock/models.py:1598 +msgid "Stock items must refer to the same supplier part" +msgstr "" + +#: stock/models.py:1603 +msgid "Stock status codes must match" +msgstr "" + +#: stock/models.py:1807 +msgid "StockItem cannot be moved as it is not in stock" +msgstr "" + +#: stock/models.py:2264 +msgid "Entry notes" +msgstr "" + +#: stock/models.py:2323 +msgid "Value must be provided for this test" +msgstr "" + +#: stock/models.py:2329 +msgid "Attachment must be uploaded for this test" +msgstr "" + +#: stock/models.py:2344 +msgid "Test name" +msgstr "" + +#: stock/models.py:2348 +msgid "Test result" +msgstr "" + +#: stock/models.py:2355 +msgid "Test output value" +msgstr "" + +#: stock/models.py:2363 +msgid "Test result attachment" +msgstr "" + +#: stock/models.py:2367 +msgid "Test notes" +msgstr "" + +#: stock/serializers.py:117 +msgid "Serial number is too large" +msgstr "" + +#: stock/serializers.py:215 +msgid "Use pack size when adding: the quantity defined is the number of packs" +msgstr "" + +#: stock/serializers.py:328 +msgid "Purchase price of this stock item, per unit or pack" +msgstr "" + +#: stock/serializers.py:390 +msgid "Enter number of stock items to serialize" +msgstr "" + +#: stock/serializers.py:403 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({q})" +msgstr "" + +#: stock/serializers.py:410 +msgid "Enter serial numbers for new items" +msgstr "" + +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 +msgid "Destination stock location" +msgstr "" + +#: stock/serializers.py:428 +msgid "Optional note field" +msgstr "" + +#: stock/serializers.py:438 +msgid "Serial numbers cannot be assigned to this part" +msgstr "" + +#: stock/serializers.py:493 +msgid "Select stock item to install" +msgstr "" + +#: stock/serializers.py:500 +msgid "Quantity to Install" +msgstr "" + +#: stock/serializers.py:501 +msgid "Enter the quantity of items to install" +msgstr "" + +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 +msgid "Add transaction note (optional)" +msgstr "" + +#: stock/serializers.py:514 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:522 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:529 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:541 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:611 +msgid "Select part to convert stock item into" +msgstr "" + +#: stock/serializers.py:624 +msgid "Selected part is not a valid option for conversion" +msgstr "" + +#: stock/serializers.py:641 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:672 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:709 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:715 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:977 +msgid "Part must be salable" +msgstr "" + +#: stock/serializers.py:981 +msgid "Item is allocated to a sales order" +msgstr "" + +#: stock/serializers.py:985 +msgid "Item is allocated to a build order" +msgstr "" + +#: stock/serializers.py:1009 +msgid "Customer to assign stock items" +msgstr "" + +#: stock/serializers.py:1015 +msgid "Selected company is not a customer" +msgstr "" + +#: stock/serializers.py:1023 +msgid "Stock assignment notes" +msgstr "" + +#: stock/serializers.py:1033 stock/serializers.py:1287 +msgid "A list of stock items must be provided" +msgstr "" + +#: stock/serializers.py:1112 +msgid "Stock merging notes" +msgstr "" + +#: stock/serializers.py:1117 +msgid "Allow mismatched suppliers" +msgstr "" + +#: stock/serializers.py:1118 +msgid "Allow stock items with different supplier parts to be merged" +msgstr "" + +#: stock/serializers.py:1123 +msgid "Allow mismatched status" +msgstr "" + +#: stock/serializers.py:1124 +msgid "Allow stock items with different status codes to be merged" +msgstr "" + +#: stock/serializers.py:1134 +msgid "At least two stock items must be provided" +msgstr "" + +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 +msgid "StockItem primary key value" +msgstr "" + +#: stock/serializers.py:1249 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1277 +msgid "Stock transaction notes" +msgstr "" + +#: stock/templates/stock/item.html:17 +msgid "Stock Tracking Information" +msgstr "" + +#: stock/templates/stock/item.html:63 +msgid "Child Stock Items" +msgstr "" + +#: stock/templates/stock/item.html:72 +msgid "This stock item does not have any child items" +msgstr "" + +#: stock/templates/stock/item.html:81 +#: stock/templates/stock/stock_sidebar.html:12 +msgid "Test Data" +msgstr "" + +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 +msgid "Test Report" +msgstr "" + +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 +msgid "Delete Test Data" +msgstr "" + +#: stock/templates/stock/item.html:93 +msgid "Add Test Data" +msgstr "" + +#: stock/templates/stock/item.html:125 +msgid "Stock Item Notes" +msgstr "" + +#: stock/templates/stock/item.html:140 +msgid "Installed Stock Items" +msgstr "" + +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 +msgid "Install Stock Item" +msgstr "" + +#: stock/templates/stock/item.html:267 +msgid "Delete all test results for this stock item" +msgstr "" + +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 +msgid "Add Test Result" +msgstr "" + +#: stock/templates/stock/item_base.html:33 +msgid "Locate stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:51 +msgid "Scan to Location" +msgstr "" + +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 +msgid "Printing actions" +msgstr "" + +#: stock/templates/stock/item_base.html:75 +msgid "Stock adjustment actions" +msgstr "" + +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 +msgid "Count stock" +msgstr "" + +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 +msgid "Add stock" +msgstr "" + +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 +msgid "Remove stock" +msgstr "" + +#: stock/templates/stock/item_base.html:85 +msgid "Serialize stock" +msgstr "" + +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 +msgid "Transfer stock" +msgstr "" + +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 +msgid "Assign to customer" +msgstr "" + +#: stock/templates/stock/item_base.html:94 +msgid "Return to stock" +msgstr "" + +#: stock/templates/stock/item_base.html:97 +msgid "Uninstall stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:97 +msgid "Uninstall" +msgstr "" + +#: stock/templates/stock/item_base.html:101 +msgid "Install stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:101 +msgid "Install" +msgstr "" + +#: stock/templates/stock/item_base.html:115 +msgid "Convert to variant" +msgstr "" + +#: stock/templates/stock/item_base.html:118 +msgid "Duplicate stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:120 +msgid "Edit stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:123 +msgid "Delete stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:211 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:251 +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:252 +#: stock/templates/stock/location.html:149 +msgid "Read only" +msgstr "" + +#: stock/templates/stock/item_base.html:265 +msgid "This stock item is unavailable" +msgstr "" + +#: stock/templates/stock/item_base.html:271 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:272 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:287 +msgid "This stock item is allocated to Sales Order" +msgstr "" + +#: stock/templates/stock/item_base.html:295 +msgid "This stock item is allocated to Build Order" +msgstr "" + +#: stock/templates/stock/item_base.html:311 +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:317 +msgid "previous page" +msgstr "" + +#: stock/templates/stock/item_base.html:317 +msgid "Navigate to previous serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:326 +msgid "next page" +msgstr "" + +#: stock/templates/stock/item_base.html:326 +msgid "Navigate to next serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:340 +msgid "Available Quantity" +msgstr "" + +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2376 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:413 +msgid "Tests" +msgstr "" + +#: stock/templates/stock/item_base.html:419 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:437 +#, python-format +msgid "This StockItem expired on %(item.expiry_date)s" +msgstr "" + +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:163 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:439 +#, python-format +msgid "This StockItem expires on %(item.expiry_date)s" +msgstr "" + +#: stock/templates/stock/item_base.html:455 +msgid "No stocktake performed" +msgstr "" + +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 +msgid "stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:532 +msgid "Edit Stock Status" +msgstr "" + +#: stock/templates/stock/item_base.html:541 +msgid "Stock Item QR Code" +msgstr "" + +#: stock/templates/stock/item_base.html:552 +msgid "Link Barcode to Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:616 +msgid "Select one of the part variants listed below." +msgstr "" + +#: stock/templates/stock/item_base.html:619 +msgid "Warning" +msgstr "" + +#: stock/templates/stock/item_base.html:620 +msgid "This action cannot be easily undone" +msgstr "" + +#: stock/templates/stock/item_base.html:628 +msgid "Convert Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:662 +msgid "Return to Stock" +msgstr "" + +#: stock/templates/stock/item_serialize.html:5 +msgid "Create serialized items from this stock item." +msgstr "" + +#: stock/templates/stock/item_serialize.html:7 +msgid "Select quantity to serialize, and unique serial numbers." +msgstr "" + +#: stock/templates/stock/location.html:38 +msgid "Perform stocktake for this stock location" +msgstr "" + +#: stock/templates/stock/location.html:45 +msgid "Locate stock location" +msgstr "" + +#: stock/templates/stock/location.html:63 +msgid "Scan stock items into this location" +msgstr "" + +#: stock/templates/stock/location.html:63 +msgid "Scan In Stock Items" +msgstr "" + +#: stock/templates/stock/location.html:64 +msgid "Scan stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:64 +msgid "Scan In Container" +msgstr "" + +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 +msgid "Location actions" +msgstr "" + +#: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 +msgid "Delete location" +msgstr "" + +#: stock/templates/stock/location.html:138 +msgid "Top level stock location" +msgstr "" + +#: stock/templates/stock/location.html:144 +msgid "Location Owner" +msgstr "" + +#: stock/templates/stock/location.html:148 +msgid "You are not in the list of owners of this location. This stock location cannot be edited." +msgstr "" + +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 +#: stock/templates/stock/location_sidebar.html:5 +msgid "Sublocations" +msgstr "" + +#: stock/templates/stock/location.html:217 +msgid "Create new stock location" +msgstr "" + +#: stock/templates/stock/location.html:218 +msgid "New Location" +msgstr "" + +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 +msgid "stock location" +msgstr "" + +#: stock/templates/stock/location.html:317 +msgid "Scanned stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:390 +msgid "Stock Location QR Code" +msgstr "" + +#: stock/templates/stock/location.html:401 +msgid "Link Barcode to Stock Location" +msgstr "" + +#: stock/templates/stock/stock_app_base.html:16 +msgid "Loading..." +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:5 +msgid "Stock Tracking" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:8 +msgid "Allocations" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:20 +msgid "Child Items" +msgstr "" + +#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7 +msgid "Permission Denied" +msgstr "" + +#: templates/403.html:15 +msgid "You do not have permission to view this page." +msgstr "" + +#: templates/403_csrf.html:11 +msgid "Authentication Failure" +msgstr "" + +#: templates/403_csrf.html:14 +msgid "You have been logged out from InvenTree." +msgstr "" + +#: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 +#: templates/navbar.html:150 +msgid "Login" +msgstr "" + +#: templates/404.html:6 templates/404.html:12 +msgid "Page Not Found" +msgstr "" + +#: templates/404.html:15 +msgid "The requested page does not exist" +msgstr "" + +#: templates/500.html:6 templates/500.html:12 +msgid "Internal Server Error" +msgstr "" + +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" +msgstr "" + +#: templates/500.html:16 +msgid "Refer to the error log in the admin interface for further details" +msgstr "" + +#: templates/503.html:11 templates/503.html:33 +msgid "Site is in Maintenance" +msgstr "" + +#: templates/503.html:39 +msgid "The site is currently in maintenance and should be up again soon!" +msgstr "" + +#: templates/InvenTree/index.html:7 +msgid "Index" +msgstr "" + +#: templates/InvenTree/index.html:39 +msgid "Subscribed Parts" +msgstr "" + +#: templates/InvenTree/index.html:52 +msgid "Subscribed Categories" +msgstr "" + +#: templates/InvenTree/index.html:62 +msgid "Latest Parts" +msgstr "" + +#: templates/InvenTree/index.html:77 +msgid "BOM Waiting Validation" +msgstr "" + +#: templates/InvenTree/index.html:106 +msgid "Recently Updated" +msgstr "" + +#: templates/InvenTree/index.html:134 +msgid "Depleted Stock" +msgstr "" + +#: templates/InvenTree/index.html:148 +msgid "Required for Build Orders" +msgstr "" + +#: templates/InvenTree/index.html:156 +msgid "Expired Stock" +msgstr "" + +#: templates/InvenTree/index.html:172 +msgid "Stale Stock" +msgstr "" + +#: templates/InvenTree/index.html:199 +msgid "Build Orders In Progress" +msgstr "" + +#: templates/InvenTree/index.html:210 +msgid "Overdue Build Orders" +msgstr "" + +#: templates/InvenTree/index.html:230 +msgid "Outstanding Purchase Orders" +msgstr "" + +#: templates/InvenTree/index.html:241 +msgid "Overdue Purchase Orders" +msgstr "" + +#: templates/InvenTree/index.html:262 +msgid "Outstanding Sales Orders" +msgstr "" + +#: templates/InvenTree/index.html:273 +msgid "Overdue Sales Orders" +msgstr "" + +#: templates/InvenTree/index.html:299 +msgid "InvenTree News" +msgstr "" + +#: templates/InvenTree/index.html:301 +msgid "Current News" +msgstr "" + +#: templates/InvenTree/notifications/history.html:9 +msgid "Notification History" +msgstr "" + +#: templates/InvenTree/notifications/history.html:13 +#: templates/InvenTree/notifications/history.html:14 +#: templates/InvenTree/notifications/notifications.html:75 +msgid "Delete Notifications" +msgstr "" + +#: templates/InvenTree/notifications/inbox.html:9 +msgid "Pending Notifications" +msgstr "" + +#: templates/InvenTree/notifications/inbox.html:13 +#: templates/InvenTree/notifications/inbox.html:14 +msgid "Mark all as read" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:10 +#: templates/InvenTree/notifications/sidebar.html:5 +#: templates/InvenTree/settings/sidebar.html:17 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 +msgid "Notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:38 +msgid "No unread notifications found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:58 +msgid "No notification history found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:65 +msgid "Delete all read notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:89 +#: templates/js/translated/notification.js:85 +msgid "Delete Notification" +msgstr "" + +#: templates/InvenTree/notifications/sidebar.html:8 +msgid "Inbox" +msgstr "" + +#: templates/InvenTree/notifications/sidebar.html:10 +msgid "History" +msgstr "" + +#: templates/InvenTree/search.html:8 +msgid "Search Results" +msgstr "" + +#: templates/InvenTree/settings/barcode.html:8 +msgid "Barcode Settings" +msgstr "" + +#: templates/InvenTree/settings/build.html:8 +msgid "Build Order Settings" +msgstr "" + +#: templates/InvenTree/settings/category.html:7 +msgid "Category Settings" +msgstr "" + +#: templates/InvenTree/settings/global.html:8 +msgid "Server Settings" +msgstr "" + +#: templates/InvenTree/settings/label.html:8 +#: templates/InvenTree/settings/user_labels.html:9 +msgid "Label Settings" +msgstr "" + +#: templates/InvenTree/settings/login.html:8 +msgid "Login Settings" +msgstr "" + +#: templates/InvenTree/settings/login.html:15 +msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!" +msgstr "" + +#: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5 +#: templates/socialaccount/signup.html:5 +msgid "Signup" +msgstr "" + +#: templates/InvenTree/settings/login.html:34 +msgid "Single Sign On" +msgstr "" + +#: templates/InvenTree/settings/mixins/settings.html:5 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 +msgid "Settings" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:5 +msgid "URLs" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:8 +#, python-format +msgid "The Base-URL for this plugin is %(base)s." +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:14 +msgid "URL" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:23 +msgid "Open in new tab" +msgstr "" + +#: templates/InvenTree/settings/notifications.html:9 +#: templates/InvenTree/settings/user_notifications.html:9 +msgid "Notification Settings" +msgstr "" + +#: templates/InvenTree/settings/notifications.html:18 +msgid "Slug" +msgstr "" + +#: templates/InvenTree/settings/part.html:7 +msgid "Part Settings" +msgstr "" + +#: templates/InvenTree/settings/part.html:42 +msgid "Part Import" +msgstr "" + +#: templates/InvenTree/settings/part.html:46 +msgid "Import Part" +msgstr "" + +#: templates/InvenTree/settings/part_parameters.html:20 +msgid "Part Parameter Templates" +msgstr "" + +#: templates/InvenTree/settings/part_stocktake.html:7 +msgid "Stocktake Settings" +msgstr "" + +#: templates/InvenTree/settings/part_stocktake.html:25 +msgid "Stocktake Reports" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:9 +#: templates/InvenTree/settings/sidebar.html:64 +msgid "Plugin Settings" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:15 +msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." +msgstr "" + +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 +msgid "Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:41 +#: templates/InvenTree/settings/plugin.html:42 +#: templates/js/translated/plugin.js:151 +msgid "Install Plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:44 +#: templates/InvenTree/settings/plugin.html:45 +#: templates/js/translated/plugin.js:224 +msgid "Reload Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:55 +msgid "External plugins are not enabled for this InvenTree installation" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:70 +msgid "Plugin Error Stack" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:79 +msgid "Stage" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:81 +#: templates/js/translated/notification.js:76 +msgid "Message" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:16 +msgid "Plugin information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:47 +msgid "no version information supplied" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:61 +msgid "License" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:70 +msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running." +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:76 +msgid "Package information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:82 +msgid "Installation method" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:85 +msgid "This plugin was installed as a package" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:87 +msgid "This plugin was found in a local server path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:93 +msgid "Installation path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:100 +#: templates/js/translated/plugin.js:68 +#: templates/js/translated/table_filters.js:492 +msgid "Builtin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:101 +msgid "This is a builtin plugin which cannot be disabled" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:72 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 +msgid "Commit Author" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:117 +#: templates/about.html:36 +msgid "Commit Date" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:121 +#: templates/about.html:29 +msgid "Commit Hash" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:125 +msgid "Commit Message" +msgstr "" + +#: templates/InvenTree/settings/po.html:7 +msgid "Purchase Order Settings" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:7 +msgid "Pricing Settings" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:34 +msgid "Exchange Rates" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:38 +msgid "Update Now" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:46 +#: templates/InvenTree/settings/pricing.html:50 +msgid "Last Update" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:50 +msgid "Never" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:8 +msgid "Project Code Settings" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:21 +#: templates/InvenTree/settings/sidebar.html:33 +msgid "Project Codes" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:25 +#: templates/InvenTree/settings/settings_staff_js.html:216 +msgid "New Project Code" +msgstr "" + +#: templates/InvenTree/settings/report.html:8 +#: templates/InvenTree/settings/user_reporting.html:9 +msgid "Report Settings" +msgstr "" + +#: templates/InvenTree/settings/returns.html:7 +msgid "Return Order Settings" +msgstr "" + +#: templates/InvenTree/settings/setting.html:31 +msgid "No value set" +msgstr "" + +#: templates/InvenTree/settings/setting.html:46 +msgid "Edit setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:58 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:60 +msgid "Edit Notification Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:63 +msgid "Edit Global Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:65 +msgid "Edit User Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:49 +msgid "Rate" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:411 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:158 +#: templates/js/translated/build.js:2224 +msgid "group" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:175 +#: templates/InvenTree/settings/settings_staff_js.html:189 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:176 +#: templates/InvenTree/settings/settings_staff_js.html:203 +msgid "Delete Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:285 +msgid "No category parameter templates found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:308 +#: templates/js/translated/part.js:1645 +msgid "Edit Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:309 +#: templates/js/translated/part.js:1646 +msgid "Delete Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:326 +msgid "Edit Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:353 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:388 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:418 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:440 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:461 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:466 +#: templates/InvenTree/settings/settings_staff_js.html:480 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:467 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:490 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:500 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:6 +#: templates/InvenTree/settings/user_settings.html:9 +msgid "User Settings" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:9 +msgid "Account" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:11 +msgid "Display" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:13 +msgid "Home Page" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:15 +#: templates/js/translated/forms.js:2155 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 +msgid "Search" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:19 +#: templates/InvenTree/settings/sidebar.html:43 +msgid "Reporting" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:24 +msgid "Global Settings" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9 +msgid "Server" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:41 +msgid "Labels" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:45 +msgid "Categories" +msgstr "" + +#: templates/InvenTree/settings/so.html:7 +msgid "Sales Order Settings" +msgstr "" + +#: templates/InvenTree/settings/stock.html:7 +msgid "Stock Settings" +msgstr "" + +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + +#: templates/InvenTree/settings/user.html:13 +msgid "Account Settings" +msgstr "" + +#: templates/InvenTree/settings/user.html:19 +#: templates/account/password_reset_from_key.html:4 +#: templates/account/password_reset_from_key.html:7 +msgid "Change Password" +msgstr "" + +#: templates/InvenTree/settings/user.html:33 +msgid "Username" +msgstr "" + +#: templates/InvenTree/settings/user.html:37 +msgid "First Name" +msgstr "" + +#: templates/InvenTree/settings/user.html:41 +msgid "Last Name" +msgstr "" + +#: templates/InvenTree/settings/user.html:55 +msgid "The following email addresses are associated with your account:" +msgstr "" + +#: templates/InvenTree/settings/user.html:76 +msgid "Verified" +msgstr "" + +#: templates/InvenTree/settings/user.html:78 +msgid "Unverified" +msgstr "" + +#: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 +msgid "Primary" +msgstr "" + +#: templates/InvenTree/settings/user.html:86 +msgid "Make Primary" +msgstr "" + +#: templates/InvenTree/settings/user.html:87 +msgid "Re-send Verification" +msgstr "" + +#: templates/InvenTree/settings/user.html:96 +msgid "Warning:" +msgstr "" + +#: templates/InvenTree/settings/user.html:97 +msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc." +msgstr "" + +#: templates/InvenTree/settings/user.html:105 +msgid "Add Email Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:110 +msgid "Add Email" +msgstr "" + +#: templates/InvenTree/settings/user.html:120 +msgid "Multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:125 +msgid "You have these factors available:" +msgstr "" + +#: templates/InvenTree/settings/user.html:135 +msgid "TOTP" +msgstr "" + +#: templates/InvenTree/settings/user.html:141 +msgid "Static" +msgstr "" + +#: templates/InvenTree/settings/user.html:150 +msgid "Multifactor authentication is not configured for your account" +msgstr "" + +#: templates/InvenTree/settings/user.html:157 +msgid "Change factors" +msgstr "" + +#: templates/InvenTree/settings/user.html:158 +msgid "Setup multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:160 +msgid "Remove multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:168 +msgid "Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:174 +msgid "Log out active sessions (except this one)" +msgstr "" + +#: templates/InvenTree/settings/user.html:175 +msgid "Log Out Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:184 +msgid "unknown on unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:185 +msgid "unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:189 +msgid "IP Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:190 +msgid "Device" +msgstr "" + +#: templates/InvenTree/settings/user.html:191 +msgid "Last Activity" +msgstr "" + +#: templates/InvenTree/settings/user.html:204 +#, python-format +msgid "%(time)s ago (this session)" +msgstr "" + +#: templates/InvenTree/settings/user.html:206 +#, python-format +msgid "%(time)s ago" +msgstr "" + +#: templates/InvenTree/settings/user.html:218 +msgid "Do you really want to remove the selected email address?" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:9 +msgid "Display Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:29 +msgid "Theme Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:39 +msgid "Select theme" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:50 +msgid "Set Theme" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:58 +msgid "Language Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:67 +msgid "Select language" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:83 +#, python-format +msgid "%(lang_translated)s%% translated" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:85 +msgid "No translations available" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:92 +msgid "Set Language" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:95 +msgid "Some languages are not complete" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:97 +msgid "Show only sufficient" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:99 +msgid "and hidden." +msgstr "" + +#: templates/InvenTree/settings/user_display.html:99 +msgid "Show them too" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:106 +msgid "Help the translation efforts!" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:107 +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgstr "" + +#: templates/InvenTree/settings/user_display.html:108 +msgid "InvenTree Translation Project" +msgstr "" + +#: templates/InvenTree/settings/user_homepage.html:9 +msgid "Home Page Settings" +msgstr "" + +#: templates/InvenTree/settings/user_search.html:9 +msgid "Search Settings" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:9 +msgid "Single Sign On Accounts" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:16 +msgid "You can sign in to your account using any of the following third party accounts:" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:52 +msgid "There are no social network accounts connected to this account." +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:58 +msgid "Add SSO Account" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:67 +msgid "Single Sign On is not enabled for this server" +msgstr "" + +#: templates/about.html:9 +msgid "InvenTree Version" +msgstr "" + +#: templates/about.html:14 +msgid "Development Version" +msgstr "" + +#: templates/about.html:17 +msgid "Up to Date" +msgstr "" + +#: templates/about.html:19 +msgid "Update Available" +msgstr "" + +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 +msgid "InvenTree Documentation" +msgstr "" + +#: templates/about.html:54 +msgid "API Version" +msgstr "" + +#: templates/about.html:59 +msgid "Python Version" +msgstr "" + +#: templates/about.html:64 +msgid "Django Version" +msgstr "" + +#: templates/about.html:69 +msgid "View Code on GitHub" +msgstr "" + +#: templates/about.html:74 +msgid "Credits" +msgstr "" + +#: templates/about.html:79 +msgid "Mobile App" +msgstr "" + +#: templates/about.html:84 +msgid "Submit Bug Report" +msgstr "" + +#: templates/about.html:91 templates/clip.html:4 +#: templates/js/translated/helpers.js:585 +msgid "copy to clipboard" +msgstr "" + +#: templates/about.html:91 +msgid "copy version information" +msgstr "" + +#: templates/account/base.html:66 templates/navbar.html:17 +msgid "InvenTree logo" +msgstr "" + +#: templates/account/email_confirm.html:6 +#: templates/account/email_confirm.html:9 +msgid "Confirm Email Address" +msgstr "" + +#: templates/account/email_confirm.html:15 +#, python-format +msgid "Please confirm that %(email)s is an email address for user %(user_display)s." +msgstr "" + +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:770 +msgid "Confirm" +msgstr "" + +#: templates/account/email_confirm.html:29 +#, python-format +msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request." +msgstr "" + +#: templates/account/login.html:6 templates/account/login.html:17 +#: templates/account/login.html:38 templates/socialaccount/login.html:5 +msgid "Sign In" +msgstr "" + +#: templates/account/login.html:21 +msgid "Not a member?" +msgstr "" + +#: templates/account/login.html:23 templates/account/signup.html:11 +#: templates/account/signup.html:22 templates/socialaccount/signup.html:8 +#: templates/socialaccount/signup.html:25 +msgid "Sign Up" +msgstr "" + +#: templates/account/login.html:45 +msgid "Forgot Password?" +msgstr "" + +#: templates/account/login.html:53 +msgid "or log in with" +msgstr "" + +#: templates/account/logout.html:5 templates/account/logout.html:8 +#: templates/account/logout.html:20 +msgid "Sign Out" +msgstr "" + +#: templates/account/logout.html:10 +msgid "Are you sure you want to sign out?" +msgstr "" + +#: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +msgid "Return to Site" +msgstr "" + +#: templates/account/password_reset.html:5 +#: templates/account/password_reset.html:12 +msgid "Password Reset" +msgstr "" + +#: templates/account/password_reset.html:18 +msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." +msgstr "" + +#: templates/account/password_reset.html:23 +msgid "Reset My Password" +msgstr "" + +#: templates/account/password_reset.html:27 templates/account/signup.html:37 +msgid "This function is currently disabled. Please contact an administrator." +msgstr "" + +#: templates/account/password_reset_from_key.html:7 +msgid "Bad Token" +msgstr "" + +#: templates/account/password_reset_from_key.html:11 +#, python-format +msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." +msgstr "" + +#: templates/account/password_reset_from_key.html:18 +msgid "Change password" +msgstr "" + +#: templates/account/password_reset_from_key.html:22 +msgid "Your password is now changed." +msgstr "" + +#: templates/account/signup.html:13 +#, python-format +msgid "Already have an account? Then please sign in." +msgstr "" + +#: templates/account/signup.html:28 +msgid "Use a SSO-provider for signup" +msgstr "" + +#: templates/account/signup_closed.html:5 +#: templates/account/signup_closed.html:8 +msgid "Sign Up Closed" +msgstr "" + +#: templates/account/signup_closed.html:10 +msgid "Sign up is currently closed." +msgstr "" + +#: templates/account/signup_closed.html:15 +#: templates/socialaccount/authentication_error.html:19 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 +msgid "Return to login page" +msgstr "" + +#: templates/admin_button.html:8 +msgid "View in administration panel" +msgstr "" + +#: templates/allauth_2fa/authenticate.html:5 +msgid "Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/authenticate.html:13 +msgid "Authenticate" +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:6 +msgid "Two-Factor Authentication Backup Tokens" +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:17 +msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones." +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:20 +msgid "No backup tokens are available. Press the button below to generate some." +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:28 +msgid "Generate Tokens" +msgstr "" + +#: templates/allauth_2fa/remove.html:6 +msgid "Disable Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/remove.html:9 +msgid "Are you sure?" +msgstr "" + +#: templates/allauth_2fa/remove.html:17 +msgid "Disable 2FA" +msgstr "" + +#: templates/allauth_2fa/setup.html:6 +msgid "Setup Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/setup.html:10 +msgid "Step 1" +msgstr "" + +#: templates/allauth_2fa/setup.html:14 +msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." +msgstr "" + +#: templates/allauth_2fa/setup.html:23 +msgid "Step 2" +msgstr "" + +#: templates/allauth_2fa/setup.html:27 +msgid "Input a token generated by the app:" +msgstr "" + +#: templates/allauth_2fa/setup.html:37 +msgid "Verify" +msgstr "" + +#: templates/attachment_button.html:4 templates/js/translated/attachment.js:70 +msgid "Add Link" +msgstr "" + +#: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 +msgid "Add Attachment" +msgstr "" + +#: templates/barcode_data.html:5 +msgid "Barcode Identifier" +msgstr "" + +#: templates/base.html:103 +msgid "Server Restart Required" +msgstr "" + +#: templates/base.html:106 +msgid "A configuration option has been changed which requires a server restart" +msgstr "" + +#: templates/base.html:106 templates/base.html:116 +msgid "Contact your system administrator for further information" +msgstr "" + +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + +#: templates/email/build_order_completed.html:9 +#: templates/email/canceled_order_assigned.html:9 +#: templates/email/new_order_assigned.html:9 +#: templates/email/overdue_build_order.html:9 +#: templates/email/overdue_purchase_order.html:9 +#: templates/email/overdue_sales_order.html:9 +#: templates/email/purchase_order_received.html:9 +#: templates/email/return_order_received.html:9 +msgid "Click on the following link to view this order" +msgstr "" + +#: templates/email/build_order_required_stock.html:7 +msgid "Stock is required for the following build order" +msgstr "" + +#: templates/email/build_order_required_stock.html:8 +#, python-format +msgid "Build order %(build)s - building %(quantity)s x %(part)s" +msgstr "" + +#: templates/email/build_order_required_stock.html:10 +msgid "Click on the following link to view this build order" +msgstr "" + +#: templates/email/build_order_required_stock.html:14 +msgid "The following parts are low on required stock" +msgstr "" + +#: templates/email/build_order_required_stock.html:18 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 +msgid "Required Quantity" +msgstr "" + +#: templates/email/build_order_required_stock.html:38 +#: templates/email/low_stock_notification.html:30 +msgid "You are receiving this email because you are subscribed to notifications for this part " +msgstr "" + +#: templates/email/low_stock_notification.html:9 +msgid "Click on the following link to view this part" +msgstr "" + +#: templates/email/low_stock_notification.html:18 +#: templates/js/translated/part.js:3187 +msgid "Minimum Quantity" +msgstr "" + +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 +msgid "No Response" +msgstr "" + +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 +msgid "No response from the InvenTree server" +msgstr "" + +#: templates/js/translated/api.js:232 +msgid "Error 400: Bad request" +msgstr "" + +#: templates/js/translated/api.js:233 +msgid "API request returned error code 400" +msgstr "" + +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 +msgid "Error 401: Not Authenticated" +msgstr "" + +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 +msgid "Authentication credentials not supplied" +msgstr "" + +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 +msgid "Error 403: Permission Denied" +msgstr "" + +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 +msgid "You do not have the required permissions to access this function" +msgstr "" + +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 +msgid "Error 404: Resource Not Found" +msgstr "" + +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 +msgid "The requested resource could not be located on the server" +msgstr "" + +#: templates/js/translated/api.js:252 +msgid "Error 405: Method Not Allowed" +msgstr "" + +#: templates/js/translated/api.js:253 +msgid "HTTP method not allowed at URL" +msgstr "" + +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 +msgid "Error 408: Timeout" +msgstr "" + +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 +msgid "Connection timeout while requesting data from server" +msgstr "" + +#: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 +msgid "Error code" +msgstr "" + +#: templates/js/translated/attachment.js:114 +msgid "All selected attachments will be deleted" +msgstr "" + +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 +msgid "No attachments found" +msgstr "" + +#: templates/js/translated/attachment.js:315 +msgid "Edit Attachment" +msgstr "" + +#: templates/js/translated/attachment.js:346 +msgid "Upload Date" +msgstr "" + +#: templates/js/translated/attachment.js:366 +msgid "Edit attachment" +msgstr "" + +#: templates/js/translated/attachment.js:374 +msgid "Delete attachment" +msgstr "" + +#: templates/js/translated/barcode.js:43 +msgid "Scan barcode data here using barcode scanner" +msgstr "" + +#: templates/js/translated/barcode.js:45 +msgid "Enter barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:59 +msgid "Scan barcode using connected webcam" +msgstr "" + +#: templates/js/translated/barcode.js:138 +msgid "Enter optional notes for stock transfer" +msgstr "" + +#: templates/js/translated/barcode.js:139 +msgid "Enter notes" +msgstr "" + +#: templates/js/translated/barcode.js:188 +msgid "Server error" +msgstr "" + +#: templates/js/translated/barcode.js:217 +msgid "Unknown response from server" +msgstr "" + +#: templates/js/translated/barcode.js:252 +#: templates/js/translated/modals.js:1120 +msgid "Invalid server response" +msgstr "" + +#: templates/js/translated/barcode.js:372 +msgid "Scan barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:420 templates/navbar.html:114 +msgid "Scan Barcode" +msgstr "" + +#: templates/js/translated/barcode.js:458 +msgid "No URL in response" +msgstr "" + +#: templates/js/translated/barcode.js:498 +msgid "This will remove the link to the associated barcode" +msgstr "" + +#: templates/js/translated/barcode.js:504 +msgid "Unlink" +msgstr "" + +#: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 +msgid "Remove stock item" +msgstr "" + +#: templates/js/translated/barcode.js:610 +msgid "Scan Stock Items Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:612 +msgid "Scan stock item barcode to check in to this location" +msgstr "" + +#: templates/js/translated/barcode.js:615 +#: templates/js/translated/barcode.js:812 +msgid "Check In" +msgstr "" + +#: templates/js/translated/barcode.js:647 +msgid "No barcode provided" +msgstr "" + +#: templates/js/translated/barcode.js:687 +msgid "Stock Item already scanned" +msgstr "" + +#: templates/js/translated/barcode.js:691 +msgid "Stock Item already in this location" +msgstr "" + +#: templates/js/translated/barcode.js:698 +msgid "Added stock item" +msgstr "" + +#: templates/js/translated/barcode.js:707 +msgid "Barcode does not match valid stock item" +msgstr "" + +#: templates/js/translated/barcode.js:726 +msgid "Scan Stock Container Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:728 +msgid "Scan stock container barcode to check in to this location" +msgstr "" + +#: templates/js/translated/barcode.js:762 +msgid "Barcode does not match valid stock location" +msgstr "" + +#: templates/js/translated/barcode.js:806 +msgid "Check Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:875 +#: templates/js/translated/barcode.js:884 +msgid "Barcode does not match a valid location" +msgstr "" + +#: templates/js/translated/bom.js:78 +msgid "Create BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:132 +msgid "Display row data" +msgstr "" + +#: templates/js/translated/bom.js:188 +msgid "Row Data" +msgstr "" + +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:805 templates/modals.html:15 +#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 +msgid "Close" +msgstr "" + +#: templates/js/translated/bom.js:306 +msgid "Download BOM Template" +msgstr "" + +#: templates/js/translated/bom.js:351 +msgid "Multi Level BOM" +msgstr "" + +#: templates/js/translated/bom.js:352 +msgid "Include BOM data for subassemblies" +msgstr "" + +#: templates/js/translated/bom.js:357 +msgid "Levels" +msgstr "" + +#: templates/js/translated/bom.js:358 +msgid "Select maximum number of BOM levels to export (0 = all levels)" +msgstr "" + +#: templates/js/translated/bom.js:365 +msgid "Include Alternative Parts" +msgstr "" + +#: templates/js/translated/bom.js:366 +msgid "Include alternative parts in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:371 +msgid "Include Parameter Data" +msgstr "" + +#: templates/js/translated/bom.js:372 +msgid "Include part parameter data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:377 +msgid "Include Stock Data" +msgstr "" + +#: templates/js/translated/bom.js:378 +msgid "Include part stock data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:383 +msgid "Include Manufacturer Data" +msgstr "" + +#: templates/js/translated/bom.js:384 +msgid "Include part manufacturer data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:389 +msgid "Include Supplier Data" +msgstr "" + +#: templates/js/translated/bom.js:390 +msgid "Include part supplier data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:395 +msgid "Include Pricing Data" +msgstr "" + +#: templates/js/translated/bom.js:396 +msgid "Include part pricing data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:591 +msgid "Remove substitute part" +msgstr "" + +#: templates/js/translated/bom.js:645 +msgid "Select and add a new substitute part using the input below" +msgstr "" + +#: templates/js/translated/bom.js:656 +msgid "Are you sure you wish to remove this substitute part link?" +msgstr "" + +#: templates/js/translated/bom.js:662 +msgid "Remove Substitute Part" +msgstr "" + +#: templates/js/translated/bom.js:701 +msgid "Add Substitute" +msgstr "" + +#: templates/js/translated/bom.js:702 +msgid "Edit BOM Item Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:764 +msgid "All selected BOM items will be deleted" +msgstr "" + +#: templates/js/translated/bom.js:780 +msgid "Delete selected BOM items?" +msgstr "" + +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:946 +msgid "Substitutes Available" +msgstr "" + +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 +msgid "Variant stock allowed" +msgstr "" + +#: templates/js/translated/bom.js:1014 +msgid "Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:1139 +msgid "BOM pricing is complete" +msgstr "" + +#: templates/js/translated/bom.js:1144 +msgid "BOM pricing is incomplete" +msgstr "" + +#: templates/js/translated/bom.js:1151 +msgid "No pricing available" +msgstr "" + +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 +#: templates/js/translated/sales_order.js:1910 +msgid "No Stock Available" +msgstr "" + +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:1256 +#: templates/js/translated/sales_order.js:1907 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 +msgid "Includes substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 +msgid "Consumable item" +msgstr "" + +#: templates/js/translated/bom.js:1279 +msgid "Validate BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1281 +msgid "This line has been validated" +msgstr "" + +#: templates/js/translated/bom.js:1283 +msgid "Edit substitute parts" +msgstr "" + +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +msgid "Edit BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1287 +msgid "Delete BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1307 +msgid "View BOM" +msgstr "" + +#: templates/js/translated/bom.js:1391 +msgid "No BOM items found" +msgstr "" + +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 +msgid "Required Part" +msgstr "" + +#: templates/js/translated/bom.js:1677 +msgid "Inherited from parent BOM" +msgstr "" + +#: templates/js/translated/build.js:142 +msgid "Edit Build Order" +msgstr "" + +#: templates/js/translated/build.js:190 +msgid "Create Build Order" +msgstr "" + +#: templates/js/translated/build.js:222 +msgid "Cancel Build Order" +msgstr "" + +#: templates/js/translated/build.js:231 +msgid "Are you sure you wish to cancel this build?" +msgstr "" + +#: templates/js/translated/build.js:237 +msgid "Stock items have been allocated to this build order" +msgstr "" + +#: templates/js/translated/build.js:244 +msgid "There are incomplete outputs remaining for this build order" +msgstr "" + +#: templates/js/translated/build.js:296 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:304 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "" + +#: templates/js/translated/build.js:309 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:327 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 +msgid "Next available serial number" +msgstr "" + +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 +msgid "Latest serial number" +msgstr "" + +#: templates/js/translated/build.js:379 +msgid "The Bill of Materials contains trackable parts" +msgstr "" + +#: templates/js/translated/build.js:380 +msgid "Build outputs must be generated individually" +msgstr "" + +#: templates/js/translated/build.js:388 +msgid "Trackable parts can have serial numbers specified" +msgstr "" + +#: templates/js/translated/build.js:389 +msgid "Enter serial numbers to generate multiple single build outputs" +msgstr "" + +#: templates/js/translated/build.js:396 +msgid "Create Build Output" +msgstr "" + +#: templates/js/translated/build.js:427 +msgid "Allocate stock items to this build output" +msgstr "" + +#: templates/js/translated/build.js:435 +msgid "Deallocate stock from build output" +msgstr "" + +#: templates/js/translated/build.js:444 +msgid "Complete build output" +msgstr "" + +#: templates/js/translated/build.js:452 +msgid "Scrap build output" +msgstr "" + +#: templates/js/translated/build.js:459 +msgid "Delete build output" +msgstr "" + +#: templates/js/translated/build.js:479 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" +msgstr "" + +#: templates/js/translated/build.js:497 +msgid "Deallocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 +msgid "Select Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 +msgid "At least one build output must be selected" +msgstr "" + +#: templates/js/translated/build.js:598 +msgid "Selected build outputs will be marked as complete" +msgstr "" + +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 +msgid "Output" +msgstr "" + +#: templates/js/translated/build.js:630 +msgid "Complete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:727 +msgid "Selected build outputs will be marked as scrapped" +msgstr "" + +#: templates/js/translated/build.js:729 +msgid "Scrapped output are marked as rejected" +msgstr "" + +#: templates/js/translated/build.js:730 +msgid "Allocated stock items will no longer be available" +msgstr "" + +#: templates/js/translated/build.js:731 +msgid "The completion status of the build order will not be adjusted" +msgstr "" + +#: templates/js/translated/build.js:762 +msgid "Scrap Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:852 +msgid "Selected build outputs will be deleted" +msgstr "" + +#: templates/js/translated/build.js:854 +msgid "Build output data will be permanently deleted" +msgstr "" + +#: templates/js/translated/build.js:855 +msgid "Allocated stock items will be returned to stock" +msgstr "" + +#: templates/js/translated/build.js:873 +msgid "Delete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:960 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:1003 +msgid "Location not specified" +msgstr "" + +#: templates/js/translated/build.js:1025 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1043 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1061 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1115 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1116 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1120 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1292 +msgid "No active build outputs found" +msgstr "" + +#: templates/js/translated/build.js:1385 +msgid "Allocated Lines" +msgstr "" + +#: templates/js/translated/build.js:1399 +msgid "Required Tests" +msgstr "" + +#: templates/js/translated/build.js:1571 +#: templates/js/translated/purchase_order.js:630 +#: templates/js/translated/sales_order.js:1171 +msgid "Select Parts" +msgstr "" + +#: templates/js/translated/build.js:1572 +#: templates/js/translated/sales_order.js:1172 +msgid "You must select at least one part to allocate" +msgstr "" + +#: templates/js/translated/build.js:1635 +#: templates/js/translated/sales_order.js:1121 +msgid "Specify stock allocation quantity" +msgstr "" + +#: templates/js/translated/build.js:1712 +msgid "All Parts Allocated" +msgstr "" + +#: templates/js/translated/build.js:1713 +msgid "All selected parts have been fully allocated" +msgstr "" + +#: templates/js/translated/build.js:1727 +#: templates/js/translated/sales_order.js:1186 +msgid "Select source location (leave blank to take from all locations)" +msgstr "" + +#: templates/js/translated/build.js:1755 +msgid "Allocate Stock Items to Build Order" +msgstr "" + +#: templates/js/translated/build.js:1766 +#: templates/js/translated/sales_order.js:1283 +msgid "No matching stock locations" +msgstr "" + +#: templates/js/translated/build.js:1839 +#: templates/js/translated/sales_order.js:1362 +msgid "No matching stock items" +msgstr "" + +#: templates/js/translated/build.js:1936 +msgid "Automatic Stock Allocation" +msgstr "" + +#: templates/js/translated/build.js:1937 +msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" +msgstr "" + +#: templates/js/translated/build.js:1939 +msgid "If a location is specified, stock will only be allocated from that location" +msgstr "" + +#: templates/js/translated/build.js:1940 +msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" +msgstr "" + +#: templates/js/translated/build.js:1941 +msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" +msgstr "" + +#: templates/js/translated/build.js:1972 +msgid "Allocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:2078 +msgid "No builds matching query" +msgstr "" + +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 +#: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 +msgid "Select" +msgstr "" + +#: templates/js/translated/build.js:2127 +msgid "Build order is overdue" +msgstr "" + +#: templates/js/translated/build.js:2173 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 +msgid "No user information" +msgstr "" + +#: templates/js/translated/build.js:2385 +#: templates/js/translated/sales_order.js:1646 +msgid "Edit stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2386 +#: templates/js/translated/sales_order.js:1647 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2401 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2413 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2454 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2455 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2473 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 +#: templates/js/translated/part.js:1202 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2538 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2590 +#: templates/js/translated/sales_order.js:1915 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2641 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2646 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2653 +#: templates/js/translated/sales_order.js:2016 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2662 +#: templates/js/translated/sales_order.js:2010 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2666 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 +msgid "Add Manufacturer" +msgstr "" + +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 +msgid "Add Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:132 +msgid "Edit Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 +msgid "Add Supplier" +msgstr "" + +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:352 +msgid "Add Supplier Part" +msgstr "" + +#: templates/js/translated/company.js:344 +msgid "All selected supplier parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:360 +msgid "Delete Supplier Parts" +msgstr "" + +#: templates/js/translated/company.js:465 +msgid "Add new Company" +msgstr "" + +#: templates/js/translated/company.js:536 +msgid "Parts Supplied" +msgstr "" + +#: templates/js/translated/company.js:545 +msgid "Parts Manufactured" +msgstr "" + +#: templates/js/translated/company.js:560 +msgid "No company information found" +msgstr "" + +#: templates/js/translated/company.js:609 +msgid "Create New Contact" +msgstr "" + +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 +msgid "Edit Contact" +msgstr "" + +#: templates/js/translated/company.js:662 +msgid "All selected contacts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 +msgid "Role" +msgstr "" + +#: templates/js/translated/company.js:676 +msgid "Delete Contacts" +msgstr "" + +#: templates/js/translated/company.js:707 +msgid "No contacts found" +msgstr "" + +#: templates/js/translated/company.js:720 +msgid "Phone Number" +msgstr "" + +#: templates/js/translated/company.js:726 +msgid "Email Address" +msgstr "" + +#: templates/js/translated/company.js:752 +msgid "Delete Contact" +msgstr "" + +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 +msgid "All selected manufacturer parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1117 +msgid "Delete Manufacturer Parts" +msgstr "" + +#: templates/js/translated/company.js:1151 +msgid "All selected parameters will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1165 +msgid "Delete Parameters" +msgstr "" + +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 +msgid "No manufacturer parts found" +msgstr "" + +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:798 +#: templates/js/translated/part.js:1210 +msgid "Template part" +msgstr "" + +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:802 +#: templates/js/translated/part.js:1214 +msgid "Assembled part" +msgstr "" + +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464 +msgid "No parameters found" +msgstr "" + +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1527 +msgid "Edit parameter" +msgstr "" + +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1528 +msgid "Delete parameter" +msgstr "" + +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1433 +msgid "Edit Parameter" +msgstr "" + +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1549 +msgid "Delete Parameter" +msgstr "" + +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 +msgid "No supplier parts found" +msgstr "" + +#: templates/js/translated/company.js:1654 +msgid "Base Units" +msgstr "" + +#: templates/js/translated/company.js:1684 +msgid "Availability" +msgstr "" + +#: templates/js/translated/company.js:1715 +msgid "Edit supplier part" +msgstr "" + +#: templates/js/translated/company.js:1716 +msgid "Delete supplier part" +msgstr "" + +#: templates/js/translated/company.js:1769 +#: templates/js/translated/pricing.js:694 +msgid "Delete Price Break" +msgstr "" + +#: templates/js/translated/company.js:1779 +#: templates/js/translated/pricing.js:712 +msgid "Edit Price Break" +msgstr "" + +#: templates/js/translated/company.js:1794 +msgid "No price break information found" +msgstr "" + +#: templates/js/translated/company.js:1823 +msgid "Last updated" +msgstr "" + +#: templates/js/translated/company.js:1830 +msgid "Edit price break" +msgstr "" + +#: templates/js/translated/company.js:1831 +msgid "Delete price break" +msgstr "" + +#: templates/js/translated/filters.js:186 +#: templates/js/translated/filters.js:672 +msgid "true" +msgstr "" + +#: templates/js/translated/filters.js:190 +#: templates/js/translated/filters.js:673 +msgid "false" +msgstr "" + +#: templates/js/translated/filters.js:214 +msgid "Select filter" +msgstr "" + +#: templates/js/translated/filters.js:437 +msgid "Print Labels" +msgstr "" + +#: templates/js/translated/filters.js:441 +msgid "Print Reports" +msgstr "" + +#: templates/js/translated/filters.js:453 +msgid "Download table data" +msgstr "" + +#: templates/js/translated/filters.js:460 +msgid "Reload table data" +msgstr "" + +#: templates/js/translated/filters.js:469 +msgid "Add new filter" +msgstr "" + +#: templates/js/translated/filters.js:477 +msgid "Clear all filters" +msgstr "" + +#: templates/js/translated/filters.js:582 +msgid "Create filter" +msgstr "" + +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 +msgid "Action Prohibited" +msgstr "" + +#: templates/js/translated/forms.js:376 +msgid "Create operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:391 +msgid "Update operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:405 +msgid "Delete operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:419 +msgid "View operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:796 +msgid "Keep this form open" +msgstr "" + +#: templates/js/translated/forms.js:899 +msgid "Enter a valid number" +msgstr "" + +#: templates/js/translated/forms.js:1469 templates/modals.html:19 +#: templates/modals.html:43 +msgid "Form errors exist" +msgstr "" + +#: templates/js/translated/forms.js:1967 +msgid "No results found" +msgstr "" + +#: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239 +msgid "Searching" +msgstr "" + +#: templates/js/translated/forms.js:2485 +msgid "Clear input" +msgstr "" + +#: templates/js/translated/forms.js:3071 +msgid "File Column" +msgstr "" + +#: templates/js/translated/forms.js:3071 +msgid "Field Name" +msgstr "" + +#: templates/js/translated/forms.js:3083 +msgid "Select Columns" +msgstr "" + +#: templates/js/translated/helpers.js:77 +msgid "YES" +msgstr "" + +#: templates/js/translated/helpers.js:80 +msgid "NO" +msgstr "" + +#: templates/js/translated/helpers.js:93 +msgid "True" +msgstr "" + +#: templates/js/translated/helpers.js:94 +msgid "False" +msgstr "" + +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" +msgstr "" + +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 +msgid "Select Items" +msgstr "" + +#: templates/js/translated/label.js:54 +msgid "No items selected for printing" +msgstr "" + +#: templates/js/translated/label.js:72 +msgid "No Labels Found" +msgstr "" + +#: templates/js/translated/label.js:73 +msgid "No label templates found which match the selected items" +msgstr "" + +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:148 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:148 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:149 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:155 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:168 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:187 +msgid "Labels sent to printer" +msgstr "" + +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 +msgid "Cancel" +msgstr "" + +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 +#: templates/modals.html:28 templates/modals.html:51 +msgid "Submit" +msgstr "" + +#: templates/js/translated/modals.js:156 +msgid "Form Title" +msgstr "" + +#: templates/js/translated/modals.js:445 +msgid "Waiting for server..." +msgstr "" + +#: templates/js/translated/modals.js:596 +msgid "Show Error Information" +msgstr "" + +#: templates/js/translated/modals.js:682 +msgid "Accept" +msgstr "" + +#: templates/js/translated/modals.js:740 +msgid "Loading Data" +msgstr "" + +#: templates/js/translated/modals.js:1011 +msgid "Invalid response from server" +msgstr "" + +#: templates/js/translated/modals.js:1011 +msgid "Form data missing from server response" +msgstr "" + +#: templates/js/translated/modals.js:1023 +msgid "Error posting form data" +msgstr "" + +#: templates/js/translated/modals.js:1120 +msgid "JSON response missing form data" +msgstr "" + +#: templates/js/translated/modals.js:1135 +msgid "Error 400: Bad Request" +msgstr "" + +#: templates/js/translated/modals.js:1136 +msgid "Server returned error code 400" +msgstr "" + +#: templates/js/translated/modals.js:1159 +msgid "Error requesting form data" +msgstr "" + +#: templates/js/translated/news.js:33 +msgid "No news found" +msgstr "" + +#: templates/js/translated/news.js:38 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1604 +msgid "ID" +msgstr "" + +#: templates/js/translated/notification.js:52 +msgid "Age" +msgstr "" + +#: templates/js/translated/notification.js:65 +msgid "Notification" +msgstr "" + +#: templates/js/translated/notification.js:224 +msgid "Mark as unread" +msgstr "" + +#: templates/js/translated/notification.js:228 +msgid "Mark as read" +msgstr "" + +#: templates/js/translated/notification.js:254 +msgid "No unread notifications" +msgstr "" + +#: templates/js/translated/notification.js:296 templates/notifications.html:12 +msgid "Notifications will load here" +msgstr "" + +#: templates/js/translated/order.js:89 +msgid "Add Extra Line Item" +msgstr "" + +#: templates/js/translated/order.js:126 +msgid "Export Order" +msgstr "" + +#: templates/js/translated/order.js:241 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:255 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:268 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:281 +#: templates/js/translated/purchase_order.js:1987 +msgid "No line items found" +msgstr "" + +#: templates/js/translated/order.js:369 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:370 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:374 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/part.js:90 +msgid "Part Attributes" +msgstr "" + +#: templates/js/translated/part.js:94 +msgid "Part Creation Options" +msgstr "" + +#: templates/js/translated/part.js:98 +msgid "Part Duplication Options" +msgstr "" + +#: templates/js/translated/part.js:121 +msgid "Add Part Category" +msgstr "" + +#: templates/js/translated/part.js:308 +msgid "Parent part category" +msgstr "" + +#: templates/js/translated/part.js:332 templates/js/translated/stock.js:175 +msgid "Icon (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/part.js:352 +msgid "Create Part Category" +msgstr "" + +#: templates/js/translated/part.js:355 +msgid "Create new category after this one" +msgstr "" + +#: templates/js/translated/part.js:356 +msgid "Part category created" +msgstr "" + +#: templates/js/translated/part.js:370 +msgid "Edit Part Category" +msgstr "" + +#: templates/js/translated/part.js:383 +msgid "Are you sure you want to delete this part category?" +msgstr "" + +#: templates/js/translated/part.js:388 +msgid "Move to parent category" +msgstr "" + +#: templates/js/translated/part.js:397 +msgid "Delete Part Category" +msgstr "" + +#: templates/js/translated/part.js:401 +msgid "Action for parts in this category" +msgstr "" + +#: templates/js/translated/part.js:406 +msgid "Action for child categories" +msgstr "" + +#: templates/js/translated/part.js:430 +msgid "Create Part" +msgstr "" + +#: templates/js/translated/part.js:432 +msgid "Create another part after this one" +msgstr "" + +#: templates/js/translated/part.js:433 +msgid "Part created successfully" +msgstr "" + +#: templates/js/translated/part.js:461 +msgid "Edit Part" +msgstr "" + +#: templates/js/translated/part.js:463 +msgid "Part edited" +msgstr "" + +#: templates/js/translated/part.js:474 +msgid "Create Part Variant" +msgstr "" + +#: templates/js/translated/part.js:531 +msgid "Active Part" +msgstr "" + +#: templates/js/translated/part.js:532 +msgid "Part cannot be deleted as it is currently active" +msgstr "" + +#: templates/js/translated/part.js:546 +msgid "Deleting this part cannot be reversed" +msgstr "" + +#: templates/js/translated/part.js:548 +msgid "Any stock items for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:549 +msgid "This part will be removed from any Bills of Material" +msgstr "" + +#: templates/js/translated/part.js:550 +msgid "All manufacturer and supplier information for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:557 +msgid "Delete Part" +msgstr "" + +#: templates/js/translated/part.js:593 +msgid "You are subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:595 +msgid "You have subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:600 +msgid "Subscribe to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:602 +msgid "You have unsubscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:619 +msgid "Validating the BOM will mark each line item as valid" +msgstr "" + +#: templates/js/translated/part.js:629 +msgid "Validate Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:632 +msgid "Validated Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:657 +msgid "Copy Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:685 +#: templates/js/translated/table_filters.js:743 +msgid "Low stock" +msgstr "" + +#: templates/js/translated/part.js:688 +msgid "No stock available" +msgstr "" + +#: templates/js/translated/part.js:748 +msgid "Demand" +msgstr "" + +#: templates/js/translated/part.js:771 +msgid "Unit" +msgstr "" + +#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +msgid "Virtual part" +msgstr "" + +#: templates/js/translated/part.js:806 +msgid "Subscribed part" +msgstr "" + +#: templates/js/translated/part.js:810 +msgid "Salable part" +msgstr "" + +#: templates/js/translated/part.js:889 +msgid "Schedule generation of a new stocktake report." +msgstr "" + +#: templates/js/translated/part.js:889 +msgid "Once complete, the stocktake report will be available for download." +msgstr "" + +#: templates/js/translated/part.js:897 +msgid "Generate Stocktake Report" +msgstr "" + +#: templates/js/translated/part.js:901 +msgid "Stocktake report scheduled" +msgstr "" + +#: templates/js/translated/part.js:1050 +msgid "No stocktake information available" +msgstr "" + +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +msgid "Edit Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +msgid "Delete Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1281 +msgid "No variants found" +msgstr "" + +#: templates/js/translated/part.js:1599 +msgid "No part parameter templates found" +msgstr "" + +#: templates/js/translated/part.js:1662 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1674 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/js/translated/part.js:1682 +msgid "Delete Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1716 +#: templates/js/translated/purchase_order.js:1651 +msgid "No purchase orders found" +msgstr "" + +#: templates/js/translated/part.js:1860 +#: templates/js/translated/purchase_order.js:2150 +#: templates/js/translated/return_order.js:756 +#: templates/js/translated/sales_order.js:1875 +msgid "This line item is overdue" +msgstr "" + +#: templates/js/translated/part.js:1906 +#: templates/js/translated/purchase_order.js:2217 +msgid "Receive line item" +msgstr "" + +#: templates/js/translated/part.js:1969 +msgid "Delete part relationship" +msgstr "" + +#: templates/js/translated/part.js:1991 +msgid "Delete Part Relationship" +msgstr "" + +#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 +msgid "No parts found" +msgstr "" + +#: templates/js/translated/part.js:2200 +msgid "Set the part category for the selected parts" +msgstr "" + +#: templates/js/translated/part.js:2205 +msgid "Set Part Category" +msgstr "" + +#: templates/js/translated/part.js:2235 +msgid "Set category" +msgstr "" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + +#: templates/js/translated/part.js:2288 +msgid "parts" +msgstr "" + +#: templates/js/translated/part.js:2384 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2547 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2645 +msgid "No subcategories found" +msgstr "" + +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660 +msgid "Display as tree" +msgstr "" + +#: templates/js/translated/part.js:2761 +msgid "Load Subcategories" +msgstr "" + +#: templates/js/translated/part.js:2777 +msgid "Subscribed category" +msgstr "" + +#: templates/js/translated/part.js:2854 +msgid "No test templates matching query" +msgstr "" + +#: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436 +msgid "Edit test result" +msgstr "" + +#: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 +msgid "Delete test result" +msgstr "" + +#: templates/js/translated/part.js:2910 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/translated/part.js:2926 +msgid "Edit Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:2940 +msgid "Delete Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020 +msgid "No date specified" +msgstr "" + +#: templates/js/translated/part.js:3022 +msgid "Specified date is in the past" +msgstr "" + +#: templates/js/translated/part.js:3028 +msgid "Speculative" +msgstr "" + +#: templates/js/translated/part.js:3078 +msgid "No scheduling information available for this part" +msgstr "" + +#: templates/js/translated/part.js:3084 +msgid "Error fetching scheduling information for this part" +msgstr "" + +#: templates/js/translated/part.js:3180 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:3196 +msgid "Maximum Quantity" +msgstr "" + +#: templates/js/translated/part.js:3241 +msgid "Minimum Stock Level" +msgstr "" + +#: templates/js/translated/plugin.js:46 +msgid "No plugins found" +msgstr "" + +#: templates/js/translated/plugin.js:58 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:60 +msgid "This plugin is active" +msgstr "" + +#: templates/js/translated/plugin.js:62 +msgid "This plugin is installed but not active" +msgstr "" + +#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:186 +msgid "Disable Plugin" +msgstr "" + +#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:186 +msgid "Enable Plugin" +msgstr "" + +#: templates/js/translated/plugin.js:158 +msgid "The Plugin was installed" +msgstr "" + +#: templates/js/translated/plugin.js:177 +msgid "Are you sure you want to enable this plugin?" +msgstr "" + +#: templates/js/translated/plugin.js:181 +msgid "Are you sure you want to disable this plugin?" +msgstr "" + +#: templates/js/translated/plugin.js:189 +msgid "Enable" +msgstr "" + +#: templates/js/translated/plugin.js:189 +msgid "Disable" +msgstr "" + +#: templates/js/translated/plugin.js:203 +msgid "Plugin updated" +msgstr "" + +#: templates/js/translated/pricing.js:159 +msgid "Error fetching currency data" +msgstr "" + +#: templates/js/translated/pricing.js:321 +msgid "No BOM data available" +msgstr "" + +#: templates/js/translated/pricing.js:463 +msgid "No supplier pricing data available" +msgstr "" + +#: templates/js/translated/pricing.js:572 +msgid "No price break data available" +msgstr "" + +#: templates/js/translated/pricing.js:755 +msgid "No purchase history data available" +msgstr "" + +#: templates/js/translated/pricing.js:791 +msgid "Purchase Price History" +msgstr "" + +#: templates/js/translated/pricing.js:894 +msgid "No sales history data available" +msgstr "" + +#: templates/js/translated/pricing.js:916 +msgid "Sale Price History" +msgstr "" + +#: templates/js/translated/pricing.js:1005 +msgid "No variant data available" +msgstr "" + +#: templates/js/translated/pricing.js:1045 +msgid "Variant Part" +msgstr "" + +#: templates/js/translated/purchase_order.js:169 +msgid "Select purchase order to duplicate" +msgstr "" + +#: templates/js/translated/purchase_order.js:176 +msgid "Duplicate Line Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:177 +msgid "Duplicate all line items from the selected order" +msgstr "" + +#: templates/js/translated/purchase_order.js:184 +msgid "Duplicate Extra Lines" +msgstr "" + +#: templates/js/translated/purchase_order.js:185 +msgid "Duplicate extra line items from the selected order" +msgstr "" + +#: templates/js/translated/purchase_order.js:206 +msgid "Edit Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:223 +msgid "Duplication Options" +msgstr "" + +#: templates/js/translated/purchase_order.js:450 +msgid "Complete Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:467 +#: templates/js/translated/return_order.js:210 +#: templates/js/translated/sales_order.js:500 +msgid "Mark this order as complete?" +msgstr "" + +#: templates/js/translated/purchase_order.js:473 +msgid "All line items have been received" +msgstr "" + +#: templates/js/translated/purchase_order.js:478 +msgid "This order has line items which have not been marked as received." +msgstr "" + +#: templates/js/translated/purchase_order.js:479 +#: templates/js/translated/sales_order.js:514 +msgid "Completing this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/purchase_order.js:502 +msgid "Cancel Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:507 +msgid "Are you sure you wish to cancel this purchase order?" +msgstr "" + +#: templates/js/translated/purchase_order.js:513 +msgid "This purchase order can not be cancelled" +msgstr "" + +#: templates/js/translated/purchase_order.js:534 +#: templates/js/translated/return_order.js:164 +msgid "After placing this order, line items will no longer be editable." +msgstr "" + +#: templates/js/translated/purchase_order.js:539 +msgid "Issue Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:631 +msgid "At least one purchaseable part must be selected" +msgstr "" + +#: templates/js/translated/purchase_order.js:656 +msgid "Quantity to order" +msgstr "" + +#: templates/js/translated/purchase_order.js:665 +msgid "New supplier part" +msgstr "" + +#: templates/js/translated/purchase_order.js:683 +msgid "New purchase order" +msgstr "" + +#: templates/js/translated/purchase_order.js:715 +msgid "Add to purchase order" +msgstr "" + +#: templates/js/translated/purchase_order.js:863 +msgid "No matching supplier parts" +msgstr "" + +#: templates/js/translated/purchase_order.js:882 +msgid "No matching purchase orders" +msgstr "" + +#: templates/js/translated/purchase_order.js:1069 +msgid "Select Line Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1070 +#: templates/js/translated/return_order.js:492 +msgid "At least one line item must be selected" +msgstr "" + +#: templates/js/translated/purchase_order.js:1100 +msgid "Received Quantity" +msgstr "" + +#: templates/js/translated/purchase_order.js:1111 +msgid "Quantity to receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1187 +msgid "Stock Status" +msgstr "" + +#: templates/js/translated/purchase_order.js:1201 +msgid "Add barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1202 +msgid "Remove barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1205 +msgid "Specify location" +msgstr "" + +#: templates/js/translated/purchase_order.js:1213 +msgid "Add batch code" +msgstr "" + +#: templates/js/translated/purchase_order.js:1224 +msgid "Add serial numbers" +msgstr "" + +#: templates/js/translated/purchase_order.js:1276 +msgid "Serials" +msgstr "" + +#: templates/js/translated/purchase_order.js:1301 +msgid "Order Code" +msgstr "" + +#: templates/js/translated/purchase_order.js:1303 +msgid "Quantity to Receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1329 +#: templates/js/translated/return_order.js:561 +msgid "Confirm receipt of items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1330 +msgid "Receive Purchase Order Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1398 +msgid "Scan Item Barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1399 +msgid "Scan barcode on incoming item (must not match any existing stock items)" +msgstr "" + +#: templates/js/translated/purchase_order.js:1413 +msgid "Invalid barcode data" +msgstr "" + +#: templates/js/translated/purchase_order.js:1678 +#: templates/js/translated/return_order.js:286 +#: templates/js/translated/sales_order.js:774 +#: templates/js/translated/sales_order.js:998 +msgid "Order is overdue" +msgstr "" + +#: templates/js/translated/purchase_order.js:1744 +#: templates/js/translated/return_order.js:354 +#: templates/js/translated/sales_order.js:851 +#: templates/js/translated/sales_order.js:1011 +msgid "Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1840 +msgid "All selected Line items will be deleted" +msgstr "" + +#: templates/js/translated/purchase_order.js:1858 +msgid "Delete selected Line items?" +msgstr "" + +#: templates/js/translated/purchase_order.js:1913 +#: templates/js/translated/sales_order.js:2070 +msgid "Duplicate Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1928 +#: templates/js/translated/return_order.js:476 +#: templates/js/translated/return_order.js:669 +#: templates/js/translated/sales_order.js:2083 +msgid "Edit Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1939 +#: templates/js/translated/return_order.js:682 +#: templates/js/translated/sales_order.js:2094 +msgid "Delete Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2221 +#: templates/js/translated/sales_order.js:2024 +msgid "Duplicate line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2222 +#: templates/js/translated/return_order.js:801 +#: templates/js/translated/sales_order.js:2025 +msgid "Edit line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2223 +#: templates/js/translated/return_order.js:805 +#: templates/js/translated/sales_order.js:2031 +msgid "Delete line item" +msgstr "" + +#: templates/js/translated/report.js:63 +msgid "items selected" +msgstr "" + +#: templates/js/translated/report.js:71 +msgid "Select Report Template" +msgstr "" + +#: templates/js/translated/report.js:86 +msgid "Select Test Report Template" +msgstr "" + +#: templates/js/translated/report.js:140 +msgid "No Reports Found" +msgstr "" + +#: templates/js/translated/report.js:141 +msgid "No report templates found which match the selected items" +msgstr "" + +#: templates/js/translated/return_order.js:60 +#: templates/js/translated/sales_order.js:86 +msgid "Add Customer" +msgstr "" + +#: templates/js/translated/return_order.js:134 +msgid "Create Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:149 +msgid "Edit Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:169 +msgid "Issue Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:186 +msgid "Are you sure you wish to cancel this Return Order?" +msgstr "" + +#: templates/js/translated/return_order.js:193 +msgid "Cancel Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:218 +msgid "Complete Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:266 +msgid "No return orders found" +msgstr "" + +#: templates/js/translated/return_order.js:300 +#: templates/js/translated/sales_order.js:788 +msgid "Invalid Customer" +msgstr "" + +#: templates/js/translated/return_order.js:562 +msgid "Receive Return Order Items" +msgstr "" + +#: templates/js/translated/return_order.js:693 +#: templates/js/translated/sales_order.js:2231 +msgid "No matching line items" +msgstr "" + +#: templates/js/translated/return_order.js:798 +msgid "Mark item as received" +msgstr "" + +#: templates/js/translated/sales_order.js:161 +msgid "Create Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:176 +msgid "Edit Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:291 +msgid "No stock items have been allocated to this shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:296 +msgid "The following stock items will be shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:336 +msgid "Complete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:360 +msgid "Confirm Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:416 +msgid "No pending shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:420 +msgid "No stock items have been allocated to pending shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:430 +msgid "Complete Shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:452 +msgid "Skip" +msgstr "" + +#: templates/js/translated/sales_order.js:513 +msgid "This order has line items which have not been completed." +msgstr "" + +#: templates/js/translated/sales_order.js:535 +msgid "Issue this Sales Order?" +msgstr "" + +#: templates/js/translated/sales_order.js:540 +msgid "Issue Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:559 +msgid "Cancel Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:564 +msgid "Cancelling this order means that the order will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:618 +msgid "Create New Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:728 +msgid "No sales orders found" +msgstr "" + +#: templates/js/translated/sales_order.js:908 +msgid "Edit shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:911 +msgid "Complete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:916 +msgid "Delete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:933 +msgid "Edit Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:948 +msgid "Delete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:981 +msgid "No matching shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:1006 +msgid "Shipment Reference" +msgstr "" + +#: templates/js/translated/sales_order.js:1030 +#: templates/js/translated/sales_order.js:1529 +msgid "Not shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:1048 +msgid "Tracking" +msgstr "" + +#: templates/js/translated/sales_order.js:1052 +msgid "Invoice" +msgstr "" + +#: templates/js/translated/sales_order.js:1219 +msgid "Add Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:1270 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1271 +msgid "Allocate Stock Items to Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:1477 +msgid "No sales order allocations found" +msgstr "" + +#: templates/js/translated/sales_order.js:1569 +msgid "Edit Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1583 +msgid "Confirm Delete Operation" +msgstr "" + +#: templates/js/translated/sales_order.js:1584 +msgid "Delete Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1623 +#: templates/js/translated/sales_order.js:1710 +#: templates/js/translated/stock.js:1744 +msgid "Shipped to customer" +msgstr "" + +#: templates/js/translated/sales_order.js:1631 +#: templates/js/translated/sales_order.js:1719 +msgid "Stock location not specified" +msgstr "" + +#: templates/js/translated/sales_order.js:2008 +msgid "Allocate serial numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2012 +msgid "Purchase stock" +msgstr "" + +#: templates/js/translated/sales_order.js:2021 +#: templates/js/translated/sales_order.js:2209 +msgid "Calculate price" +msgstr "" + +#: templates/js/translated/sales_order.js:2035 +msgid "Cannot be deleted as items have been shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:2038 +msgid "Cannot be deleted as items have been allocated" +msgstr "" + +#: templates/js/translated/sales_order.js:2109 +msgid "Allocate Serial Numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2217 +msgid "Update Unit Price" +msgstr "" + +#: templates/js/translated/search.js:270 +msgid "No results" +msgstr "" + +#: templates/js/translated/search.js:292 templates/search.html:25 +msgid "Enter search query" +msgstr "" + +#: templates/js/translated/search.js:342 +msgid "result" +msgstr "" + +#: templates/js/translated/search.js:342 +msgid "results" +msgstr "" + +#: templates/js/translated/search.js:352 +msgid "Minimize results" +msgstr "" + +#: templates/js/translated/search.js:355 +msgid "Remove results" +msgstr "" + +#: templates/js/translated/stock.js:98 +msgid "Serialize Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:129 +msgid "Confirm Stock Serialization" +msgstr "" + +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 +msgid "Edit Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:217 +msgid "New Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:219 +msgid "Create another location after this one" +msgstr "" + +#: templates/js/translated/stock.js:220 +msgid "Stock location created" +msgstr "" + +#: templates/js/translated/stock.js:234 +msgid "Are you sure you want to delete this stock location?" +msgstr "" + +#: templates/js/translated/stock.js:241 +msgid "Move to parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:250 +msgid "Delete Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:254 +msgid "Action for stock items in this stock location" +msgstr "" + +#: templates/js/translated/stock.js:259 +msgid "Action for sub-locations" +msgstr "" + +#: templates/js/translated/stock.js:313 +msgid "This part cannot be serialized" +msgstr "" + +#: templates/js/translated/stock.js:349 +msgid "Add given quantity as packs instead of individual items" +msgstr "" + +#: templates/js/translated/stock.js:362 +msgid "Enter initial quantity for this stock item" +msgstr "" + +#: templates/js/translated/stock.js:368 +msgid "Enter serial numbers for new stock (or leave blank)" +msgstr "" + +#: templates/js/translated/stock.js:439 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:459 +msgid "Duplicate Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:475 +msgid "Are you sure you want to delete this stock item?" +msgstr "" + +#: templates/js/translated/stock.js:480 +msgid "Delete Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:501 +msgid "Edit Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:543 +msgid "Create another item after this one" +msgstr "" + +#: templates/js/translated/stock.js:555 +msgid "Created new stock item" +msgstr "" + +#: templates/js/translated/stock.js:568 +msgid "Created multiple stock items" +msgstr "" + +#: templates/js/translated/stock.js:593 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:614 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:634 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:643 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:751 +msgid "Confirm stock assignment" +msgstr "" + +#: templates/js/translated/stock.js:752 +msgid "Assign Stock to Customer" +msgstr "" + +#: templates/js/translated/stock.js:829 +msgid "Warning: Merge operation cannot be reversed" +msgstr "" + +#: templates/js/translated/stock.js:830 +msgid "Some information will be lost when merging stock items" +msgstr "" + +#: templates/js/translated/stock.js:832 +msgid "Stock transaction history will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:833 +msgid "Supplier part information will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:928 +msgid "Confirm stock item merge" +msgstr "" + +#: templates/js/translated/stock.js:929 +msgid "Merge Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1024 +msgid "Transfer Stock" +msgstr "" + +#: templates/js/translated/stock.js:1025 +msgid "Move" +msgstr "" + +#: templates/js/translated/stock.js:1031 +msgid "Count Stock" +msgstr "" + +#: templates/js/translated/stock.js:1032 +msgid "Count" +msgstr "" + +#: templates/js/translated/stock.js:1036 +msgid "Remove Stock" +msgstr "" + +#: templates/js/translated/stock.js:1037 +msgid "Take" +msgstr "" + +#: templates/js/translated/stock.js:1041 +msgid "Add Stock" +msgstr "" + +#: templates/js/translated/stock.js:1042 users/models.py:401 +msgid "Add" +msgstr "" + +#: templates/js/translated/stock.js:1046 +msgid "Delete Stock" +msgstr "" + +#: templates/js/translated/stock.js:1143 +msgid "Quantity cannot be adjusted for serialized stock" +msgstr "" + +#: templates/js/translated/stock.js:1143 +msgid "Specify stock quantity" +msgstr "" + +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 +msgid "Select Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "" + +#: templates/js/translated/stock.js:1224 +msgid "Confirm stock adjustment" +msgstr "" + +#: templates/js/translated/stock.js:1360 +msgid "PASS" +msgstr "" + +#: templates/js/translated/stock.js:1362 +msgid "FAIL" +msgstr "" + +#: templates/js/translated/stock.js:1367 +msgid "NO RESULT" +msgstr "" + +#: templates/js/translated/stock.js:1429 +msgid "Pass test" +msgstr "" + +#: templates/js/translated/stock.js:1432 +msgid "Add test result" +msgstr "" + +#: templates/js/translated/stock.js:1456 +msgid "No test results found" +msgstr "" + +#: templates/js/translated/stock.js:1520 +msgid "Test Date" +msgstr "" + +#: templates/js/translated/stock.js:1682 +msgid "Edit Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1704 +msgid "Delete Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1736 +msgid "In production" +msgstr "" + +#: templates/js/translated/stock.js:1740 +msgid "Installed in Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:1748 +msgid "Assigned to Sales Order" +msgstr "" + +#: templates/js/translated/stock.js:1754 +msgid "No stock location set" +msgstr "" + +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "" + +#: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 +msgid "Stock item has been installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:2081 +msgid "Stock item has been consumed by a build order" +msgstr "" + +#: templates/js/translated/stock.js:2085 +msgid "Stock item has expired" +msgstr "" + +#: templates/js/translated/stock.js:2087 +msgid "Stock item will expire soon" +msgstr "" + +#: templates/js/translated/stock.js:2092 +msgid "Stock item has been rejected" +msgstr "" + +#: templates/js/translated/stock.js:2094 +msgid "Stock item is lost" +msgstr "" + +#: templates/js/translated/stock.js:2096 +msgid "Stock item is destroyed" +msgstr "" + +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 +msgid "Depleted" +msgstr "" + +#: templates/js/translated/stock.js:2265 +msgid "Supplier part not specified" +msgstr "" + +#: templates/js/translated/stock.js:2312 +msgid "Stock Value" +msgstr "" + +#: templates/js/translated/stock.js:2440 +msgid "No stock items matching query" +msgstr "" + +#: templates/js/translated/stock.js:2544 +msgid "stock locations" +msgstr "" + +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" +msgstr "" + +#: templates/js/translated/stock.js:2817 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2821 +msgid "No changes" +msgstr "" + +#: templates/js/translated/stock.js:2833 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2855 +msgid "Location no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2872 +msgid "Build order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2887 +msgid "Purchase order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2904 +msgid "Sales Order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2921 +msgid "Return Order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2940 +msgid "Customer no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2958 +msgid "Stock item no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2976 +msgid "Added" +msgstr "" + +#: templates/js/translated/stock.js:2984 +msgid "Removed" +msgstr "" + +#: templates/js/translated/stock.js:3056 +msgid "No installed items" +msgstr "" + +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 +msgid "Uninstall Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:3165 +msgid "Select stock item to uninstall" +msgstr "" + +#: templates/js/translated/stock.js:3186 +msgid "Install another stock item into this item" +msgstr "" + +#: templates/js/translated/stock.js:3187 +msgid "Stock items can only be installed if they meet the following criteria" +msgstr "" + +#: templates/js/translated/stock.js:3189 +msgid "The Stock Item links to a Part which is the BOM for this Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:3190 +msgid "The Stock Item is currently available in stock" +msgstr "" + +#: templates/js/translated/stock.js:3191 +msgid "The Stock Item is not already installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:3192 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:3205 +msgid "Select part to install" +msgstr "" + +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 +msgid "Has project code" +msgstr "" + +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 +msgid "Order status" +msgstr "" + +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 +msgid "Outstanding" +msgstr "" + +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 +msgid "Assigned to me" +msgstr "" + +#: templates/js/translated/table_filters.js:158 +msgid "Trackable Part" +msgstr "" + +#: templates/js/translated/table_filters.js:162 +msgid "Assembled Part" +msgstr "" + +#: templates/js/translated/table_filters.js:166 +msgid "Has Available Stock" +msgstr "" + +#: templates/js/translated/table_filters.js:182 +msgid "Allow Variant Stock" +msgstr "" + +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 +msgid "Has Pricing" +msgstr "" + +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 +msgid "Include sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:235 +msgid "Include locations" +msgstr "" + +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 +msgid "Include subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 +msgid "Subscribed" +msgstr "" + +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 +msgid "Is Serialized" +msgstr "" + +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 +msgid "Serial number GTE" +msgstr "" + +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 +msgid "Serial number greater than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 +msgid "Serial number LTE" +msgstr "" + +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 +msgid "Serial number less than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 +msgid "Serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 +msgid "Batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 +msgid "Active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:326 +msgid "Show stock for active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:331 +msgid "Part is an assembly" +msgstr "" + +#: templates/js/translated/table_filters.js:335 +msgid "Is allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:336 +msgid "Item has been allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:341 +msgid "Stock is available for use" +msgstr "" + +#: templates/js/translated/table_filters.js:346 +msgid "Include stock in sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:351 +msgid "Show stock items which are depleted" +msgstr "" + +#: templates/js/translated/table_filters.js:356 +msgid "Show items which are in stock" +msgstr "" + +#: templates/js/translated/table_filters.js:361 +msgid "Show items which are in production" +msgstr "" + +#: templates/js/translated/table_filters.js:365 +msgid "Include Variants" +msgstr "" + +#: templates/js/translated/table_filters.js:366 +msgid "Include stock items for variant parts" +msgstr "" + +#: templates/js/translated/table_filters.js:371 +msgid "Show stock items which are installed in another item" +msgstr "" + +#: templates/js/translated/table_filters.js:376 +msgid "Show items which have been assigned to a customer" +msgstr "" + +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 +msgid "Stock status" +msgstr "" + +#: templates/js/translated/table_filters.js:400 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:409 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:414 +msgid "Has purchase price" +msgstr "" + +#: templates/js/translated/table_filters.js:415 +msgid "Show stock items which have a purchase price set" +msgstr "" + +#: templates/js/translated/table_filters.js:419 +msgid "Expiry Date before" +msgstr "" + +#: templates/js/translated/table_filters.js:423 +msgid "Expiry Date after" +msgstr "" + +#: templates/js/translated/table_filters.js:436 +msgid "Show stock items which have expired" +msgstr "" + +#: templates/js/translated/table_filters.js:442 +msgid "Show stock which is close to expiring" +msgstr "" + +#: templates/js/translated/table_filters.js:456 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:460 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:511 +msgid "Build status" +msgstr "" + +#: templates/js/translated/table_filters.js:708 +msgid "Include parts in subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:713 +msgid "Show active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:721 +msgid "Available stock" +msgstr "" + +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 +msgid "Has Units" +msgstr "" + +#: templates/js/translated/table_filters.js:730 +msgid "Part has defined units" +msgstr "" + +#: templates/js/translated/table_filters.js:734 +msgid "Has IPN" +msgstr "" + +#: templates/js/translated/table_filters.js:735 +msgid "Part has internal part number" +msgstr "" + +#: templates/js/translated/table_filters.js:739 +msgid "In stock" +msgstr "" + +#: templates/js/translated/table_filters.js:747 +msgid "Purchasable" +msgstr "" + +#: templates/js/translated/table_filters.js:759 +msgid "Has stocktake entries" +msgstr "" + +#: templates/js/translated/table_filters.js:821 +msgid "Has Choices" +msgstr "" + +#: templates/js/translated/tables.js:92 +msgid "Display calendar view" +msgstr "" + +#: templates/js/translated/tables.js:102 +msgid "Display list view" +msgstr "" + +#: templates/js/translated/tables.js:112 +msgid "Display tree view" +msgstr "" + +#: templates/js/translated/tables.js:130 +msgid "Expand all rows" +msgstr "" + +#: templates/js/translated/tables.js:136 +msgid "Collapse all rows" +msgstr "" + +#: templates/js/translated/tables.js:186 +msgid "Export Table Data" +msgstr "" + +#: templates/js/translated/tables.js:190 +msgid "Select File Format" +msgstr "" + +#: templates/js/translated/tables.js:529 +msgid "Loading data" +msgstr "" + +#: templates/js/translated/tables.js:532 +msgid "rows per page" +msgstr "" + +#: templates/js/translated/tables.js:537 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "Showing" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "to" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "of" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "rows" +msgstr "" + +#: templates/js/translated/tables.js:546 +msgid "No matching results" +msgstr "" + +#: templates/js/translated/tables.js:549 +msgid "Hide/Show pagination" +msgstr "" + +#: templates/js/translated/tables.js:555 +msgid "Toggle" +msgstr "" + +#: templates/js/translated/tables.js:558 +msgid "Columns" +msgstr "" + +#: templates/js/translated/tables.js:561 +msgid "All" +msgstr "" + +#: templates/navbar.html:45 +msgid "Buy" +msgstr "" + +#: templates/navbar.html:57 +msgid "Sell" +msgstr "" + +#: templates/navbar.html:121 +msgid "Show Notifications" +msgstr "" + +#: templates/navbar.html:124 +msgid "New Notifications" +msgstr "" + +#: templates/navbar.html:144 users/models.py:188 +msgid "Admin" +msgstr "" + +#: templates/navbar.html:148 +msgid "Logout" +msgstr "" + +#: templates/notes_buttons.html:6 templates/notes_buttons.html:7 +msgid "Save" +msgstr "" + +#: templates/notifications.html:9 +msgid "Show all notifications and history" +msgstr "" + +#: templates/qr_code.html:11 +msgid "QR data not provided" +msgstr "" + +#: templates/registration/logged_out.html:7 +msgid "You were logged out successfully." +msgstr "" + +#: templates/registration/logged_out.html:9 +msgid "Log in again" +msgstr "" + +#: templates/search.html:9 +msgid "Show full search results" +msgstr "" + +#: templates/search.html:12 +msgid "Clear search" +msgstr "" + +#: templates/search.html:15 +msgid "Close search menu" +msgstr "" + +#: templates/socialaccount/authentication_error.html:5 +msgid "Social Network Login Failure" +msgstr "" + +#: templates/socialaccount/authentication_error.html:8 +msgid "Account Login Failure" +msgstr "" + +#: templates/socialaccount/authentication_error.html:11 +msgid "An error occurred while attempting to login via your social network account." +msgstr "" + +#: templates/socialaccount/authentication_error.html:13 +msgid "Contact your system administrator for further information." +msgstr "" + +#: templates/socialaccount/login.html:13 +#, python-format +msgid "Connect %(provider)s" +msgstr "" + +#: templates/socialaccount/login.html:15 +#, python-format +msgid "You are about to connect a new third party account from %(provider)s." +msgstr "" + +#: templates/socialaccount/login.html:17 +#, python-format +msgid "Sign In Via %(provider)s" +msgstr "" + +#: templates/socialaccount/login.html:19 +#, python-format +msgid "You are about to sign in using a third party account from %(provider)s." +msgstr "" + +#: templates/socialaccount/login.html:24 +msgid "Continue" +msgstr "" + +#: templates/socialaccount/login.html:29 +msgid "Invalid SSO Provider" +msgstr "" + +#: templates/socialaccount/login.html:31 +msgid "The selected SSO provider is invalid, or has not been correctly configured" +msgstr "" + +#: templates/socialaccount/signup.html:11 +#, python-format +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" +msgstr "" + +#: templates/socialaccount/snippets/provider_list.html:26 +msgid "Provider has not been configured" +msgstr "" + +#: templates/socialaccount/snippets/provider_list.html:35 +msgid "No SSO providers have been configured" +msgstr "" + +#: templates/stats.html:13 +msgid "Instance Name" +msgstr "" + +#: templates/stats.html:18 +msgid "Database" +msgstr "" + +#: templates/stats.html:26 +msgid "Server is running in debug mode" +msgstr "" + +#: templates/stats.html:33 +msgid "Docker Mode" +msgstr "" + +#: templates/stats.html:34 +msgid "Server is deployed using docker" +msgstr "" + +#: templates/stats.html:39 +msgid "Plugin Support" +msgstr "" + +#: templates/stats.html:43 +msgid "Plugin support enabled" +msgstr "" + +#: templates/stats.html:45 +msgid "Plugin support disabled" +msgstr "" + +#: templates/stats.html:52 +msgid "Server status" +msgstr "" + +#: templates/stats.html:55 +msgid "Healthy" +msgstr "" + +#: templates/stats.html:57 +msgid "Issues detected" +msgstr "" + +#: templates/stats.html:64 +msgid "Background Worker" +msgstr "" + +#: templates/stats.html:67 +msgid "Background worker not running" +msgstr "" + +#: templates/stats.html:75 +msgid "Email Settings" +msgstr "" + +#: templates/stats.html:78 +msgid "Email settings not configured" +msgstr "" + +#: templates/yesnolabel.html:4 +msgid "Yes" +msgstr "" + +#: templates/yesnolabel.html:6 +msgid "No" +msgstr "" + +#: users/admin.py:104 +msgid "Users" +msgstr "" + +#: users/admin.py:105 +msgid "Select which users are assigned to this group" +msgstr "" + +#: users/admin.py:249 +msgid "The following users are members of multiple groups" +msgstr "" + +#: users/admin.py:283 +msgid "Personal info" +msgstr "" + +#: users/admin.py:285 +msgid "Permissions" +msgstr "" + +#: users/admin.py:288 +msgid "Important dates" +msgstr "" + +#: users/authentication.py:29 users/models.py:127 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:70 +msgid "API Token" +msgstr "" + +#: users/models.py:71 +msgid "API Tokens" +msgstr "" + +#: users/models.py:107 +msgid "Token Name" +msgstr "" + +#: users/models.py:108 +msgid "Custom token name" +msgstr "" + +#: users/models.py:114 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:122 +msgid "Last Seen" +msgstr "" + +#: users/models.py:123 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:127 +msgid "Revoked" +msgstr "" + +#: users/models.py:384 +msgid "Permission set" +msgstr "" + +#: users/models.py:393 +msgid "Group" +msgstr "" + +#: users/models.py:397 +msgid "View" +msgstr "" + +#: users/models.py:397 +msgid "Permission to view items" +msgstr "" + +#: users/models.py:401 +msgid "Permission to add items" +msgstr "" + +#: users/models.py:405 +msgid "Change" +msgstr "" + +#: users/models.py:407 +msgid "Permissions to edit items" +msgstr "" + +#: users/models.py:413 +msgid "Permission to delete items" +msgstr "" + diff --git a/InvenTree/locale/sl/LC_MESSAGES/django.po b/InvenTree/locale/sl/LC_MESSAGES/django.po index 9dc463f17e..da09935046 100644 --- a/InvenTree/locale/sl/LC_MESSAGES/django.po +++ b/InvenTree/locale/sl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Slovenian\n" "Language: sl_SI\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API vmesnik ni najden" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Uporabnik nima dovoljenja pogleda tega modela" @@ -43,7 +43,7 @@ msgstr "Vnesena napačna količina" msgid "Invalid quantity supplied ({exc})" msgstr "Vnesena napačna količina ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Napaka, podrobnosti vidne v pogledu administratorja" @@ -51,18 +51,18 @@ msgstr "Napaka, podrobnosti vidne v pogledu administratorja" msgid "Enter date" msgstr "Vnesi datum" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Podana epošta ni veljavna." msgid "The provided email domain is not approved." msgstr "Domena epošte ni podprta." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Registracija je onemogočena." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Podana napačna količina" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Prazno polje serijske številke" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Dvojna serijska številka" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Neveljavni doseg skupine: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Doseg skupine {group} presega dovoljene količine ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Nepravilno zaporedje skupine: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Serijske številke niso najdene" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Število unikatnih serijskih številk ({len(serials)}) se mora ujemati s količino ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Odstranite oznako HTML iz te vrednosti" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Napaka povezave" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Odziv serverja: napravilni status kode" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Pojavila se je izjema" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Odziv serverja: napačna dolžina vrednosti" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Prevelika velikost slike" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Prenos slike presegel največjo velikost" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Oddaljeni server vrnil prazen odziv" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Podani URL ni veljavna slikovna datoteka" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Prijave se v aplikacijo" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Češko" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Danščina" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Nemščina" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Grščina" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Angleščina" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Španščina" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Španščina (Mehiško)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Farsi / Perzijsko" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Francoščina" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Hebrejščina" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Madžarščina" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Italijanščina" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japonščina" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Korejščina" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Nizozemščina" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norveščina" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Poljščina" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugalščina" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugalščina (Brazilsko)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Ruščina" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Slovenščina" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Švedščina" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Tajščina" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Turščina" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnamščina" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "E-pošta" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Nepravilno nastavljen vzorec" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Nastavljen neprepoznan ključ formata" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Manjka obvezen ključ formata" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Referenčno polje ne sme biti prazno" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Referenca se mora ujemati s vzorcem" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Referenčna številka prevelika" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Manjka datoteka" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Manjka zunanja povezava" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Priloga" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Izberite prilogo" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Izberite prilogo" msgid "Link" msgstr "Povezava" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Zunanja povezava" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Komentar" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Komentar datoteke" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Uporabnik" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "naloži datum" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Ime ne sme biti prazno" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Neveljavna mapa prilog" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Ime datoteke vsebuje neveljavni znak '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Datoteki manjka končnica" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Priloga s tem imenom že obstaja" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Napaka pri preimenovanju datoteke" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Nedovoljena izbira" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Nedovoljena izbira" msgid "Name" msgstr "Ime" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "Ime" msgid "Description" msgstr "Opis" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Opis (opcijsko)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "nadrejen" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Pot" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Podatki čtrne kode" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Podatki črtne kode tretje osebe" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Oznaka črtne kode" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Enolična oznaka podatkov črtne kode" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Črtna koda že obstaja" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Napaka strežnika" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Zaznana napaka na strežniku." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Mora biti veljavna številka" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Ime datoteke" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Neveljavna vrednost" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Podatki datoteke" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Izberite datoteke za naložiti" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Nepodprta vrsta datotek" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Datoteka je prevelika" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "V datoteki ni bilo najdenih stolpcev" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "V datoteki ni bilo njadenih vrstic" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Niso bile podane vrste s podatki" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Niso bili podani stolpci s podatki" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Manjka obvezni stolpec: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Dvojni stolpec: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "Povezava do oddaljene slike" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Prenos slik iz oddaljene povezave ni omogočen" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Češko" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Danščina" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Nemščina" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Grščina" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Angleščina" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Španščina" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Španščina (Mehiško)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Farsi / Perzijsko" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Francoščina" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Hebrejščina" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Madžarščina" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Italijanščina" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japonščina" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Korejščina" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Nizozemščina" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norveščina" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Poljščina" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugalščina" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugalščina (Brazilsko)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Ruščina" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Slovenščina" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Švedščina" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Tajščina" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Turščina" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnamščina" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Nadzor dela v ozadju neuspel" @@ -712,7 +722,7 @@ msgstr "Vrnjeno" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "O InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Izgradnja mora biti najprej preklicana, nato je lahko izbrisana" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Nalog izgradnje" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "Nalog izgradnje" msgid "Build Orders" msgstr "Nalogi izgradnje" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Neveljavna izbira za nadrejeno izgradnjo" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Referenca naloga izgradnje" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "Referenca naloga izgradnje" msgid "Reference" msgstr "Referenca" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Nadrejena izgradnja" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" msgid "Part" msgstr "Del" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Izberite del za izgradnjo" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Referenca dobavnica" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Dobavnica na katero se navezuje ta izgradnja" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Lokacija vira" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Izberite lokacijo dela za to izgradnjo (v primeru da ni pomembno pusti prazno)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Ciljna lokacija" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Izberite lokacijo, kjer bodo končne postavke shranjene" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Količina izgradenj" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Število postavk za izgradnjo" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Končane postavke" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Število postavk zaloge, ki so bile končane" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Status izgradnje" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Koda statusa izgradnje" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Številka serije" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Številka serije za to izgradnjo" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Datum ustvarjenja" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Rok dokončanja" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Rok končanja izdelave. Izdelava po tem datumu bo v zamudi po tem datumu." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Datom končanja" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "dokončal" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Izdal" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Uporabnik, ki je izdal nalog za izgradnjo" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Odgovoren" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Zunanja povezava" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Nalog izgradnje {build} je dokončan" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "Nalog izgradnej dokončan" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Ni določena izgradnja" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "Igradnja je že dokončana" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "Izgradnja se ne ujema s nalogom izdelave" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "Količina" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Izdelana postavka mora imeti izgradnjo, če je glavni del označen kot sledljiv" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Prestavljena zaloga ({q}) ne sme presegati zaloge ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "Preveč zaloge je prestavljene" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Prestavljena količina mora biti večja od 0" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "Količina za zalogo s serijsko številko mora biti 1" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "Postavka zaloge" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Izvorna postavka zaloge" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Količina zaloge za prestavljanje za izgradnjo" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Inštaliraj v" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Destinacija postavke zaloge" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "Izgradnja" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "Izgradnja se ne ujema z nadrejeno izgradnjo" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "Izhodni del se ne ujema s naročilom sestava" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "Ta sestava je že zaključena" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1985,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Izdelava" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11870,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/sr/LC_MESSAGES/django.po b/InvenTree/locale/sr/LC_MESSAGES/django.po index 06bf73e7d8..3ec099fd6c 100644 --- a/InvenTree/locale/sr/LC_MESSAGES/django.po +++ b/InvenTree/locale/sr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Serbian (Latin)\n" "Language: sr_CS\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API krajnja tačka nije pronađena" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Korisnik nema dozvolu za pregled ovog modela" @@ -43,7 +43,7 @@ msgstr "Isporučena nevažeća količina" msgid "Invalid quantity supplied ({exc})" msgstr "Isporučena nevažeća količina ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Detalji o grešci se mogu naći u admin sekciji" @@ -51,18 +51,18 @@ msgstr "Detalji o grešci se mogu naći u admin sekciji" msgid "Enter date" msgstr "Unesite datum" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Navedena primarna adresa e-pošte nije važeća." msgid "The provided email domain is not approved." msgstr "Navedeni domen adrese e-pošte nije prihvaćen." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Registracija je onemogućena." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Isporučena nevažeća količina" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Serijski broj nije popunjen" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Dupliciraj serijski broj" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Nevažeći raspon grupe: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Raspon grupe {group} prelazi dozvoljenu količinu ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Nevažeća sekvenca grupe: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Nisu pronađeni serijski brojevi" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Broj jedinstvenih serijskih brojeva ({len(serials)}) mora odgovarati količini ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Uklonite HTML oznake iz ove vrednosti" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Greška u povezivanju" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Server je odgovorio nevažećim statusnim kodom" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Došlo je do izuzetka" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Server je odgovorio nevažećom vrednošću dužina sadržaja" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Veličina slike je prevelika" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Preuzimanje slike premašilo je maksimalnu veličinu" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Udaljeni server vratio je prazan odgovor" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Navedeni URL nije važeća slikovna datoteka" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Ulogujte se u aplikaciju" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Bugarski" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Češki" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Danski" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Nemački" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Grčki" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Engleski" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Španski" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Španski (Meksiko)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Farsi / Persijski" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Finski" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Francuski" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Jevrejski" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hindu" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Mađarski" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Italijanski" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japanski" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Korejski" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Holandski" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norveški" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Poljski" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugalski" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugalski (Brazil)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Ruski" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Slovenski" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Srpski" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Švedski" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Tajlandski" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Turski" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vijetnamski" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Kineski (Uprošćeni)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Kineski (Tradicionalni)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "E-Pošta" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Metapodaci moraju biti \"python dict\" objekat" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Metapodaci dodatka" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "Polje metapodataka JSON, za korištenje eksternih dodataka" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Neispravno formatiran obrazac" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Naveden je ključ nepoznatog formata" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Nedostaje potreban ključ formata" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Polje za reference ne može biti prazno" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Referenca mora odgovarati traženom obrascu" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Broj reference je predugačak" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Nedostaje datoteka" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Nedostaje eksterni link" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Prilog" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Izaberite datoteku za prilog" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Izaberite datoteku za prilog" msgid "Link" msgstr "Link" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Link za eksterni URL" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Komentar" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Datoteka komentara" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Korisnik" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "dadajte datoteku" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Ime datoteke ne sme biti prazno" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Direktorijum nevažećih datoteka" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Ime datoteke sadrži neprihvatljivi karakter '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Imenu datoteke nedostaje ekstenzija" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Prilog s ovim nazivom datoteke već postoji" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Greška pri preimenovanju datoteke" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "Dvostruka imena ne mogu postojati pod istom nadredjenom grupom" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Nevažeći izvor" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Nevažeći izvor" msgid "Name" msgstr "Ime" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,273 +531,149 @@ msgstr "Ime" msgid "Description" msgstr "Opis" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Opis (Opciono)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "nadređeni" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Putanja" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Zabeleške (Opciono)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Podaci sa barkoda" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Podaci sa barkoda trećih lica" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Heš barkoda" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Jedinstveni hash barkoda" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Postojeći barkod pronađen" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Greška servera" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Server je zabležio grešku." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Mora biti važeći broj" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Odaberite valutu među dostupnim opcijama" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "Nemate dozvolu za promenu ove korisničke uloge." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "Samo superkorisnici mogu kreirati nove korisnike" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" -msgstr "Dobrodošli u {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." +msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." -msgstr "Vaš račun je napravljen.\n\n" -"Koristite funkciju poništavanja lozinke da biste dobili pristup (na https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" +msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Ime datoteke" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Nevažeća vrednost" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Datoteka" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Odaberite datoteku za učitavanje" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Nije podržan tip datoteke" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Prevelika datoteka" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Nisu pronađene kolone podataka u datoteci" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Nisu pronađeni redovi podataka u datoteci" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Nisu navedeni redovi podataka" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Nisu obezbeđene kolone podataka" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Nedostaje potrebna kolona: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplicirana kolona: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "Udaljena slika" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "URL udaljene slike" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Preuzimanje slika s udaljenog URL-a nije omogućeno" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "Bugarski" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Češki" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Danski" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Nemački" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Grčki" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Engleski" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Španski" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Španski (Meksiko)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Farsi / Persijski" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Finski" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Francuski" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Jevrejski" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Hindu" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Mađarski" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Italijanski" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japanski" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Korejski" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Holandski" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norveški" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Poljski" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugalski" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugalski (Brazil)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Ruski" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Slovenski" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "Srpski" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Švedski" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Tajlandski" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Turski" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vijetnamski" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Kineski (Uprošćeni)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Kineski (Tradicionalni)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Provera pozadinskog radnika nije uspjela" @@ -713,7 +722,7 @@ msgstr "Vraćeno" msgid "In Progress" msgstr "U progresu" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -876,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -928,16 +933,16 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -949,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -970,16 +975,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Nalog za izradu" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -990,27 +995,27 @@ msgstr "Nalog za izradu" msgid "Build Orders" msgstr "Nalozi za izradu" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Nevažeći izbor za nadređenu verziju" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "Deo u nalogu za izradu ne može se izmeniti" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Reference naloga za pravljenje" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1018,27 +1023,27 @@ msgstr "Reference naloga za pravljenje" msgid "Reference" msgstr "Referenca" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "Kratak opis izrade (nije obavezno)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1049,7 +1054,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1057,8 +1062,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1082,144 +1087,144 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1228,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1283,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1315,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1361,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1456,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1491,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1769,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1807,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1830,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1858,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1871,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1887,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1986,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2044,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3455,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3559,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3621,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3659,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3848,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3863,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3938,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3999,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4081,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4099,7 +4214,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4344,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4446,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4485,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4501,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4525,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4539,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4557,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4570,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4584,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4593,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4788,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5290,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5510,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5524,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5562,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5576,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5615,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5638,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5691,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6076,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6487,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6838,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7130,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7248,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7402,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7464,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7563,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7575,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7643,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7663,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7735,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7857,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7950,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8087,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8113,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8144,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8178,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8237,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8298,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8333,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8559,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8846,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8912,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9413,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9567,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9588,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10044,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10124,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10253,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10622,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10642,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10693,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10705,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11427,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11871,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12343,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12508,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12524,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12736,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13165,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13463,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13545,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13609,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 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 03ab566b33..1d71717732 100644 --- a/InvenTree/locale/sv/LC_MESSAGES/django.po +++ b/InvenTree/locale/sv/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv_SE\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API-slutpunkt hittades inte" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Användaren har inte behörighet att se denna modell" @@ -43,7 +43,7 @@ msgstr "Ogiltigt antal angivet" msgid "Invalid quantity supplied ({exc})" msgstr "Ogiltigt antal angivet ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Information om felet finns under Error i adminpanelen" @@ -51,18 +51,18 @@ msgstr "Information om felet finns under Error i adminpanelen" msgid "Enter date" msgstr "Ange datum" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Den angivna primära e-postadressen är inte giltig." msgid "The provided email domain is not approved." msgstr "Den angivna e-postdomänen är inte godkänd." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Registrering är stängd." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Ogiltigt antal angivet" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Tom serienummersträng" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Serienummret finns redan" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Inga serienummer hittades" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Ta bort HTML-taggar från detta värde" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Anslutningsfel" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Servern svarade med ogiltig statuskod" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Undantag inträffade" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Servern svarade med ogiltigt innehållslängdsvärde" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Bilden är för stor" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Nedladdning av bilder överskred maximal storlek" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Fjärrservern returnerade tomt svar" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Angiven URL är inte en giltig bildfil" -#: InvenTree/magic_login.py:27 +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Bulgariska" + +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Tjeckiska" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Danska" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Tyska" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Grekiska" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Engelska" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Spanska" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Spanska (Mexikanska)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Farsi / Persiska" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Finska" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Franska" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Hebreiska" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Ungerska" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Italienska" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japanska" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Koreanska" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Nederländska" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norska" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Polska" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portugisiska" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portugisiska (brasiliansk)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Ryska" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "Slovakiska" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Slovenska" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Serbiska" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Svenska" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Thailändska" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Turkiska" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnamesiska" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Kinesiska (Förenklad)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Kinesiska (Traditionell)" + +#: InvenTree/magic_login.py:28 #, python-brace-format -msgid "[{site.name}] Log in to the app" +msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "E-post" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Felaktigt formaterat mönster" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Okänd formatnyckel angiven" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Obligatorisk formatnyckel saknas" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Textfältet kan inte lämnas tomt" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Referensen måste matcha obligatoriskt mönster" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Referensnumret är för stort" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Saknad fil" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Extern länk saknas" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Bilaga" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Välj fil att bifoga" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Välj fil att bifoga" msgid "Link" msgstr "Länk" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Länk till extern URL" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Kommentar" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Fil kommentar" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Användare" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "uppladdningsdatum" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Filnamnet får inte vara tomt" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Ogiltig katalog för bilaga" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Filnamnet innehåller ogiltiga tecken '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Filnamn saknar ändelse" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Det finns redan en bilaga med detta filnamn" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Fel vid namnbyte av fil" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Ogiltigt val" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Ogiltigt val" msgid "Name" msgstr "Namn" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "Namn" msgid "Description" msgstr "Beskrivning" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Beskrivning (valfritt)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "överordnad" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Sökväg" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Streckkodsdata" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Befintlig streckkod hittades" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Serverfel" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Ett fel har loggats av servern." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Måste vara ett giltigt nummer" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Välj valuta från tillgängliga alternativ" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" -msgstr "Välkommen till {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." +msgstr "Ditt konto har skapats." -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "Välkommen till InvenTree" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Filnamn" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Ogiltigt värde" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Datafil" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Välj fil för uppladdning" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Filtypen stöds inte" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Filen är för stor" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Inga kolumner hittades i filen" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Inga rader hittades i filen" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Inga rader angivna" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Inga datakolumner har angetts" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Saknar obligatorisk kolumn: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplicerad kolumn: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "URL för fjärrbildsfil" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Nedladdning av bilder från fjärr-URL är inte aktiverad" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Tjeckiska" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Danska" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Tyska" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Grekiska" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Engelska" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Spanska" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Spanska (Mexikanska)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Farsi / Persiska" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Finska" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Franska" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Hebreiska" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Hindi" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Ungerska" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Italienska" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japanska" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Koreanska" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Nederländska" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norska" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Polska" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portugisiska" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portugisiska (brasiliansk)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Ryska" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Slovenska" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Svenska" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Thailändska" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Turkiska" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnamesiska" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Kinesiska (Förenklad)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Kinesiska (Traditionell)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Kontroll av bakgrundsarbetare misslyckades" @@ -712,7 +722,7 @@ msgstr "Återlämnad" msgid "In Progress" msgstr "Pågående" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "Avvisa" msgid "Unknown database" msgstr "Okänd databas" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "Om InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Byggnationen måste avbrytas innan den kan tas bort" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Byggorder" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "Byggorder" msgid "Build Orders" msgstr "Byggordrar" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Ogiltigt val för överordnad bygge" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Byggorderreferens" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "Byggorderreferens" msgid "Reference" msgstr "Referens" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Överordnat Bygge" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Byggorder till vilken detta bygge är tilldelad" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "Byggorder till vilken detta bygge är tilldelad" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "Byggorder till vilken detta bygge är tilldelad" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "Byggorder till vilken detta bygge är tilldelad" msgid "Part" msgstr "Del" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Välj del att bygga" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Försäljningsorderreferens" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Försäljningsorder till vilken detta bygge allokeras" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Källa Plats" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Välj plats att ta lager från för detta bygge (lämna tomt för att ta från någon lagerplats)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Destinationsplats" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Välj plats där de färdiga objekten kommer att lagras" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Bygg kvantitet" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Antal lagerobjekt att bygga" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Slutförda objekt" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Antal lagerposter som har slutförts" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Byggstatus" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Bygg statuskod" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Batchkod" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Batch-kod för denna byggutdata" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Skapad" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Datum för slutförande" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Måldatum för färdigställande. Byggandet kommer att förfallas efter detta datum." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Slutförandedatum" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "slutfört av" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Utfärdad av" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Användare som utfärdade denna byggorder" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Ansvarig" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Extern länk" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "Projektkod" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Byggorder {build} har slutförts" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "En byggorder har slutförts" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Ingen byggutgång angiven" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "Byggutgång är redan slutförd" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "Byggutgång matchar inte bygg order" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "Antal" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Byggobjekt måste ange en byggutgång, eftersom huvuddelen är markerad som spårbar" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Tilldelad kvantitet ({q}) får inte överstiga tillgängligt lagersaldo ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "Lagerposten är överallokerad" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Allokeringsmängden måste vara större än noll" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "Antal måste vara 1 för serialiserat lager" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "Artikel i lager" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Källa lagervara" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Lagersaldo att allokera för att bygga" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Installera till" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Destination lagervara" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "Bygg utdata" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "Byggutdata matchar inte överordnad version" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Serienummer" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "Plats" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "Status" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "Acceptera ofullständig" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "Utfärdad av" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "Mål" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "Skapad" @@ -1985,11 +2020,11 @@ msgstr "Bilagor" msgid "Build Notes" msgstr "Bygganteckningar" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "{name.title()} Fil" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "Unik projektkod" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "Projektbeskrivning" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "Ingen grupp" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "Omstart krävs" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "Serverinstans (Namn)" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Företagsnamn" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "Internt företagsnamn" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "Bas-URL" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "Bas-URL för serverinstans" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Standardvaluta" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" -msgstr "" +msgstr "dagar" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "Ladda ned från URL" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "Tillåt nedladdning av bilder och filer från extern URL" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "Kräv bekräftelse" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "Kräv uttrycklig användarbekräftelse för vissa åtgärder." -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Stöd för streckkoder" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" -msgstr "" +msgstr "Mall" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtuell" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "Delar är virtuella som standard" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "Visa import i vyer" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "Visa importguiden i vissa delvyer" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "Visa relaterade delar" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "Visa relaterade delar för en del" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "Visningsformat för delnamn" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "Formatera för att visa artikelnamnet" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "Interna priser" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "Aktivera etikettutskrift" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "Aktivera etikettutskrift från webbgränssnittet" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "Etikettbild DPI" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "Aktivera rapporter" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "Aktivera generering av rapporter" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "Debugläge" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Sidstorlek" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "Standard sidstorlek för PDF-rapporter" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "Aktivera testrapporter" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "Tillåtna domäner" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "Aktivera projektkoder" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "Sök efter artiklar" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "Sök efter leverantörsartikel" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "Sök efter tillverkarartikel" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" -msgstr "" +msgstr "Webbplats" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Telefonnummer" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Företag" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" -msgstr "" +msgstr "Välj företag" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "Postnummer" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "Land" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "Leverantör" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Välj leverantör" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4042,16 +4158,16 @@ msgstr "" #: company/templates/company/company_base.html:33 #: templates/js/translated/company.js:444 msgid "Edit Company" -msgstr "" +msgstr "Redigera företag" #: company/templates/company/company_base.html:37 msgid "Delete company" -msgstr "" +msgstr "Radera företag" #: company/templates/company/company_base.html:38 #: company/templates/company/company_base.html:162 msgid "Delete Company" -msgstr "" +msgstr "Radera företag" #: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 @@ -4078,12 +4194,12 @@ msgstr "" #: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" -msgstr "" +msgstr "Radera bild" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "Kund" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "Adresser" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "Etikett" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "QR-kod" msgid "QR code" msgstr "QR-kod" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "Leveransdatum" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" -msgstr "" +msgstr "Streckkod" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5310,7 +5527,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:21 #: part/templates/part/import_wizard/match_references.html:28 msgid "Row" -msgstr "" +msgstr "Rad" #: order/templates/order/order_wizard/match_parts.html:29 msgid "Select Supplier Part" @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Nyckelord" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "I lager" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Ikon" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "Ikon (valfritt)" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "Kategori" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Standardleverantör" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "Generera rapport" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -6988,7 +7189,7 @@ msgstr "" #: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" -msgstr "" +msgstr "Välj filformat" #: part/templates/part/part_app_base.html:12 msgid "Part List" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "Redigera" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "Ingen åtgärd specificerad" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Ingen matchande åtgärd hittades" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "Statuskod" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "Leverantörsnamn" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Bygg" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -8949,7 +9225,7 @@ msgstr "" #: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" -msgstr "" +msgstr "Redigera lagerstatus" #: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Radera" @@ -9584,10 +9855,10 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" -msgstr "" +msgstr "Inga projektkoder hittades" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -9608,12 +9879,12 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 #: templates/js/translated/part.js:1645 msgid "Edit Template" -msgstr "" +msgstr "Redigera mall" #: templates/InvenTree/settings/settings_staff_js.html:309 #: templates/js/translated/part.js:1646 msgid "Delete Template" -msgstr "" +msgstr "Radera mall" #: templates/InvenTree/settings/settings_staff_js.html:326 msgid "Edit Category Parameter Template" @@ -9660,7 +9931,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" -msgstr "" +msgstr "Användarinställningar" #: templates/InvenTree/settings/sidebar.html:9 msgid "Account" @@ -9679,7 +9950,7 @@ msgstr "" #: templates/navbar.html:107 templates/search.html:8 #: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" -msgstr "" +msgstr "Sök" #: templates/InvenTree/settings/sidebar.html:19 #: templates/InvenTree/settings/sidebar.html:43 @@ -9716,7 +9987,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" -msgstr "" +msgstr "Kontoinställningar" #: templates/InvenTree/settings/user.html:19 #: templates/account/password_reset_from_key.html:4 @@ -9877,7 +10148,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:67 msgid "Select language" -msgstr "" +msgstr "Välj språk" #: templates/InvenTree/settings/user_display.html:83 #, python-format @@ -10043,13 +10314,13 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "Registrera dig" #: templates/account/login.html:45 msgid "Forgot Password?" -msgstr "" +msgstr "Glömt lösenord?" #: templates/account/login.html:53 msgid "or log in with" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10340,7 +10611,7 @@ msgstr "" #: templates/js/translated/api.js:266 msgid "Error code" -msgstr "" +msgstr "Felkod" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" @@ -10360,7 +10631,7 @@ msgstr "" #: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "" +msgstr "Inga bilagor hittades" #: templates/js/translated/attachment.js:315 msgid "Edit Attachment" @@ -10400,7 +10671,7 @@ msgstr "" #: templates/js/translated/barcode.js:188 msgid "Server error" -msgstr "" +msgstr "Serverfel" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "Välj artiklar" +msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11081,7 +11352,7 @@ msgstr "" #: templates/js/translated/company.js:201 #: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "Lägg till leverantör" +msgstr "" #: templates/js/translated/company.js:243 #: templates/js/translated/purchase_order.js:352 @@ -11098,7 +11369,7 @@ msgstr "" #: templates/js/translated/company.js:465 msgid "Add new Company" -msgstr "" +msgstr "Lägg till nytt företag" #: templates/js/translated/company.js:536 msgid "Parts Supplied" @@ -11296,7 +11567,7 @@ msgstr "" #: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "Senast uppdaterad" +msgstr "" #: templates/js/translated/company.js:1830 msgid "Edit price break" @@ -11322,7 +11593,7 @@ msgstr "" #: templates/js/translated/filters.js:437 msgid "Print Labels" -msgstr "" +msgstr "Skriv ut etiketter" #: templates/js/translated/filters.js:441 msgid "Print Reports" @@ -11338,11 +11609,11 @@ msgstr "" #: templates/js/translated/filters.js:469 msgid "Add new filter" -msgstr "" +msgstr "Lägg till nytt filter" #: templates/js/translated/filters.js:477 msgid "Clear all filters" -msgstr "" +msgstr "Rensa alla filter" #: templates/js/translated/filters.js:582 msgid "Create filter" @@ -11384,11 +11655,11 @@ msgstr "" #: templates/js/translated/forms.js:1967 msgid "No results found" -msgstr "" +msgstr "Inga resultat hittades" #: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239 msgid "Searching" -msgstr "" +msgstr "Söker" #: templates/js/translated/forms.js:2485 msgid "Clear input" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11440,7 +11707,7 @@ msgstr "" #: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "" +msgstr "Inga etiketter hittades" #: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" @@ -11456,15 +11723,15 @@ msgstr "" #: templates/js/translated/label.js:148 msgid "Print label" -msgstr "" +msgstr "Skriv ut etikett" #: templates/js/translated/label.js:148 msgid "Print labels" -msgstr "" +msgstr "Skriv ut etiketter" #: templates/js/translated/label.js:149 msgid "Print" -msgstr "" +msgstr "Skriv ut" #: templates/js/translated/label.js:155 msgid "Select label template" @@ -11557,11 +11824,11 @@ msgstr "" #: templates/js/translated/notification.js:224 msgid "Mark as unread" -msgstr "" +msgstr "Markera som oläst" #: templates/js/translated/notification.js:228 msgid "Mark as read" -msgstr "" +msgstr "Markera som läst" #: templates/js/translated/notification.js:254 msgid "No unread notifications" @@ -11870,13 +12137,17 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" #: templates/js/translated/part.js:2384 msgid "No category" -msgstr "" +msgstr "Ingen kategori" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2640 @@ -12171,7 +12442,7 @@ msgstr "Lagerstatus" #: templates/js/translated/purchase_order.js:1201 msgid "Add barcode" -msgstr "" +msgstr "Lägg till streckkod" #: templates/js/translated/purchase_order.js:1202 msgid "Remove barcode" @@ -12302,7 +12573,7 @@ msgstr "" #: templates/js/translated/return_order.js:60 #: templates/js/translated/sales_order.js:86 msgid "Add Customer" -msgstr "" +msgstr "Lägg till kund" #: templates/js/translated/return_order.js:134 msgid "Create Return Order" @@ -12335,14 +12606,14 @@ msgstr "" #: templates/js/translated/return_order.js:300 #: templates/js/translated/sales_order.js:788 msgid "Invalid Customer" -msgstr "" +msgstr "Ogiltig kund" #: templates/js/translated/return_order.js:562 msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12457,7 +12728,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1052 msgid "Invoice" -msgstr "" +msgstr "Faktura" #: templates/js/translated/sales_order.js:1219 msgid "Add Shipment" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,13 +12794,13 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" #: templates/js/translated/search.js:270 msgid "No results" -msgstr "" +msgstr "Inga resultat" #: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" @@ -12537,11 +12808,11 @@ msgstr "" #: templates/js/translated/search.js:342 msgid "result" -msgstr "" +msgstr "resultat" #: templates/js/translated/search.js:342 msgid "results" -msgstr "" +msgstr "resultat" #: templates/js/translated/search.js:352 msgid "Minimize results" @@ -12735,9 +13006,9 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" -msgstr "" +msgstr "Lägg till" #: templates/js/translated/stock.js:1046 msgid "Delete Stock" @@ -12817,7 +13088,7 @@ msgstr "" #: templates/js/translated/stock.js:1810 msgid "Change stock status" -msgstr "Ändra lagerstatus" +msgstr "" #: templates/js/translated/stock.js:1819 msgid "Merge stock" @@ -12926,7 +13197,7 @@ msgstr "" #: templates/js/translated/stock.js:2821 msgid "No changes" -msgstr "" +msgstr "Inga ändringar" #: templates/js/translated/stock.js:2833 msgid "Part information unavailable" @@ -13018,7 +13289,7 @@ msgstr "" #: templates/js/translated/stock.js:3285 msgid "Change Stock Status" -msgstr "Ändra lagerstatus" +msgstr "" #: templates/js/translated/table_filters.js:74 msgid "Has project code" @@ -13029,7 +13300,7 @@ msgstr "" #: templates/js/translated/table_filters.js:613 #: templates/js/translated/table_filters.js:654 msgid "Order status" -msgstr "Orderstatus" +msgstr "" #: templates/js/translated/table_filters.js:94 #: templates/js/translated/table_filters.js:618 @@ -13083,7 +13354,7 @@ msgstr "" #: templates/js/translated/table_filters.js:279 #: templates/js/translated/table_filters.js:707 msgid "Include subcategories" -msgstr "Inkludera underkategorier" +msgstr "" #: templates/js/translated/table_filters.js:287 #: templates/js/translated/table_filters.js:755 @@ -13120,7 +13391,7 @@ msgstr "" #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "" +msgstr "Serienummer" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13320,23 +13587,23 @@ msgstr "rader per sida" #: templates/js/translated/tables.js:537 msgid "Showing all rows" -msgstr "" +msgstr "Visar alla rader" #: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "" +msgstr "Visar" #: templates/js/translated/tables.js:539 msgid "to" -msgstr "" +msgstr "till" #: templates/js/translated/tables.js:539 msgid "of" -msgstr "" +msgstr "av" #: templates/js/translated/tables.js:539 msgid "rows" -msgstr "" +msgstr "rader" #: templates/js/translated/tables.js:546 msgid "No matching results" @@ -13352,7 +13619,7 @@ msgstr "" #: templates/js/translated/tables.js:558 msgid "Columns" -msgstr "" +msgstr "Kolumner" #: templates/js/translated/tables.js:561 msgid "All" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "Ja" msgid "No" msgstr "Nej" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "Användare" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 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 1557095610..18f5202987 100644 --- a/InvenTree/locale/th/LC_MESSAGES/django.po +++ b/InvenTree/locale/th/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Thai\n" "Language: th_TH\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "" @@ -43,7 +43,7 @@ msgstr "" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "" @@ -51,18 +51,18 @@ msgstr "" msgid "Enter date" msgstr "ป้อนวันที่" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "" msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "ปริมาณสินค้าไม่ถูกต้อง" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "หมายเลขซีเรียลซ้ำกัน" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "ไม่พบหมายเลขซีเรียล" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "การเชื่อมต่อขัดข้อง" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "ไฟล์รูปภาพมีขนาดใหญ่เกินไป" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +msgid "Bulgarian" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "ภาษาโปรตุเกส" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "ภาษารัสเซีย" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "ภาษาสวีเดน" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "ภาษาไทย" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "ภาษาเวียดนาม" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "ไฟล์แนบ" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "เลือกไฟล์ที่ต้องการแนบ" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "เลือกไฟล์ที่ต้องการแนบ" msgid "Link" msgstr "ลิงก์" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "ความคิดเห็น" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "ความเห็นของไฟล์" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "ผู้ใช้งาน" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "วันที่อัปโหลด" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "จำเป็นต้องใส่ชื่อไฟล์" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "ชื่อไฟล์ห้ามมีตัวอักษรต้องห้าม '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "ไม่พบนามสกุลของไฟล์" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "" msgid "Name" msgstr "ชื่อ" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "ชื่อ" msgid "Description" msgstr "คำอธิบาย" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "ข้อมูลบาร์โค้ด" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "บาร์โค้ดนี้มีในระบบแล้ว" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "เกิดข้อผิดพลาดที่เซิร์ฟเวอร์" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "ต้องเป็นตัวเลข" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "ชื่อไฟล์" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "ไฟล์ข้อมูล" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "เลือกไฟล์ข้อมูลที่จะอัปโหลด" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "ไฟล์มีขนาดใหญ่เกินไป" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "ภาษาโปรตุเกส" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "ภาษารัสเซีย" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "ภาษาสวีเดน" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "ภาษาไทย" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "ภาษาเวียดนาม" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "" @@ -712,7 +722,7 @@ msgstr "ส่งคืนแล้ว" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "เกี่ยวกับ Inventree" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "สถานะ" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1985,11 +2020,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11870,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 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 17306dfc4a..4ea2d05234 100644 --- a/InvenTree/locale/tr/LC_MESSAGES/django.po +++ b/InvenTree/locale/tr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API uç noktası bulunamadı" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Kullanıcının bu modeli görüntüleme izni yok" @@ -32,18 +32,18 @@ msgstr "Değer verilmemiş" #: InvenTree/conversion.py:128 #, python-brace-format msgid "Could not convert {original} to {unit}" -msgstr "" +msgstr "{original} birimi {unit} birimine dönüştürülemedi" #: InvenTree/conversion.py:130 msgid "Invalid quantity supplied" -msgstr "" +msgstr "Geçersiz miktar sağlandı" #: InvenTree/conversion.py:144 #, python-brace-format msgid "Invalid quantity supplied ({exc})" -msgstr "" +msgstr "Geçersiz miktar sağlandı({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Hata detaylarını admin panelinde bulabilirsiniz" @@ -51,18 +51,18 @@ msgstr "Hata detaylarını admin panelinde bulabilirsiniz" msgid "Enter date" msgstr "Tarih giriniz" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Sağlanan e-posta adresi geçerli değil." msgid "The provided email domain is not approved." msgstr "Sağlanan e-posta alanı onaylanmadı." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Kayıt devre dışı." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Geçersiz veri sağlandı" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Boş seri numarası dizesi" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Yinelenen seri" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" -msgstr "" +msgstr "Geçersiz grup aralığı: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" -msgstr "" +msgstr "Grup aralığı {group}, izin verilen miktarı aşmaktadır ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" -msgstr "" +msgstr "Geçersiz grup aralığı: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Seri numarası bulunamadı" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" -msgstr "" +msgstr "Benzersiz seri numaralarının sayısı ({len(serials)}) ile miktarın ({expected_quantity}) eşleşmesi gerekmektedir" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" -msgstr "" +msgstr "Bu değerden HTML etiketlerini kaldır" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Bağlantı hatası" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Sunucu geçersiz durum kodu ile cevap verdi" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "İstisna oluştu" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Sunucu geçersiz Content-Length değeriyle yanıt verdi" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Resim boyutu çok büyük" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Resim indirme boyutu izin verilenden büyük" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Uzak sunucu boş cevap döndü" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "Sağlanan URL geçerli bir resim dosyası değil" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Bulgarca" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Çekçe" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Danca" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Almanca" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Yunanca" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "İngilizce" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "İspanyolca" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "İspanyolca(Meksika)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Farsça" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Fince" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Fransızca" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "İbranice" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Hintçe" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Macarca" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "İtalyanca" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Japonca" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Korece" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Flemenkçe" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Norveççe" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Polonyaca" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Portekizce" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Portekizce (Brezilya)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Rusça" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "Slovakça" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Slovakça" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Sırpça" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "İsveççe" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Tay dili" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Türkçe" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Vietnamca" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Çince (Basitleştirilmiş)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Çince (Geleneksel)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "[{site_name}] Uygulamaya giriş yap" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "E-posta" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" -msgstr "" +msgstr "Metadata, bir python dict nesnesi olmalıdır" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" -msgstr "" +msgstr "Plugin Metaverileri" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" -msgstr "" +msgstr "Harici eklentiler tarafından kullanım için JSON metadata alanı" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" -msgstr "" +msgstr "Yanlış biçimlendirilmiş desen" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" -msgstr "" +msgstr "Belirtilen bilinmeyen format anahtarı" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" -msgstr "" +msgstr "Gerekli format anahtarı eksik" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" -msgstr "" +msgstr "Referans alanı boş olamaz" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Eksik dosya" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Bozuk dış bağlantı" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Ek" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Eklenecek dosyayı seç" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Eklenecek dosyayı seç" msgid "Link" msgstr "Bağlantı" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Harici URL'ye bağlantı" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Yorum" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Dosya yorumu" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Kullanıcı" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "yükleme tarihi" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Dosya adı boş olamaz" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Ek dosya yolu geçersiz" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Dosya adı geçersiz karakterler içeriyor'{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Dosya uzantısı yok" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Aynı isimli başka bir dosya zaten var" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Dosya adı değiştirilirken hata" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Geçersiz seçim" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Geçersiz seçim" msgid "Name" msgstr "Adı" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "Adı" msgid "Description" msgstr "Açıklama" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Açıklama (isteğe bağlı)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "üst" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Yol" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Barkod Verisi" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Üçüncü parti barkod verisi" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Barkod Hash" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Sunucu Hatası" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Geçerli bir numara olmalı" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Para birimi" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Dosya adı" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Geçersiz değer" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Veri Dosyası" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Yüklemek istediğiniz dosyayı seçin" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Desteklenmeyen dsoya tipi" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Dosya boyutu çok büyük" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Dosyada kolon bulunamadı" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Dosyada satır bulunamadı" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Dosyada satır bulunamadı" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Dosyada uygun kolon bulunamadı" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Gerekli kolon ismi eksik:'{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Tekrarlanan kolon ismi:'{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Çekçe" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Danca" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Almanca" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Yunanca" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "İngilizce" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "İspanyolca" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "İspanyolca(Meksika)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Farsça" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Fince" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Fransızca" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "İbranice" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Macarca" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "İtalyanca" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Japonca" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Korece" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Flemenkçe" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Norveççe" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Polonyaca" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Portekizce" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Portekizce (Brezilya)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Rusça" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Slovakça" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "İsveççe" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Tay dili" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Türkçe" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Vietnamca" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Arka plan çalışanı kontrolü başarısız oldu" @@ -712,7 +722,7 @@ msgstr "İade" msgid "In Progress" msgstr "Devam Ediyor" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "InvenTree Hakkında" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "" msgid "Available" msgstr "Mevcut" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Yapım İşi Emri" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "Yapım İşi Emri" msgid "Build Orders" msgstr "Yapım İşi Emirleri" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Yapım İşi Emri Referansı" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "Yapım İşi Emri Referansı" msgid "Reference" msgstr "Referans" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Üst Yapım İşi" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" msgid "Part" msgstr "Parça" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Yapım işi için parça seçin" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Satış Emri Referansı" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Bu yapım işinin tahsis edildiği satış emri" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Kaynak Konum" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Bu yapım işi için stok alınacak konumu seçin (her hangi bir stok konumundan alınması için boş bırakın)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Hedef Konum" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Tamamlanmış ögelerin saklanacağı konumu seçiniz" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Yapım İşi Miktarı" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Yapım işi stok kalemlerinin sayısı" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Tamamlanmış ögeler" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Tamamlanan stok kalemlerinin sayısı" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Yapım İşi Durumu" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Yapım işi durum kodu" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Sıra numarası" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Yapım işi çıktısı için sıra numarası" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Oluşturulma tarihi" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Hedef tamamlama tarihi" -#: build/models.py:274 +#: build/models.py:273 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:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Tamamlama tarihi" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "tamamlayan" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Veren" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Bu yapım işi emrini veren kullanıcı" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Sorumlu" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Harici Bağlantı" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Yapım işi çıktısı belirtilmedi" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "Yapım işi çıktısı zaten tamamlanmış" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "Yapım işi çıktısı, yapım işi emri ile eşleşmiyor" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "Miktar" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Ana parça izlenebilir olarak işaretlendiğinden, yapım işi çıktısı için bir yapım işi ögesi belirtmelidir" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "Stok kalemi fazladan tahsis edilmiş" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "Seri numaralı stok için miktar bir olmalı" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "" msgid "Stock Item" msgstr "Stok Kalemi" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Kaynak stok kalemi" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Yapım işi için tahsis edilen stok miktarı" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Kurulduğu yer" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Hedef stok kalemi" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "Yapım işi çıktısı için miktarını girin" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Seri Numaraları" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "Yapım işi çıktısı için seri numaraları girin" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "" msgid "Location" msgstr "Konum" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "Durum" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Gerekli stok tamamen tahsis edilemedi" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "Gerekli yapım işi miktarı tamamlanmadı" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,13 +1864,13 @@ msgid "Issued By" msgstr "Veren" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "Yapım İşi Emrini Sil" +msgstr "" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" @@ -1857,7 +1892,7 @@ msgstr "Stok Kaynağı" msgid "Stock can be taken from any available location." msgstr "Stok herhangi bir konumdan alınabilir." -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "Hedef" @@ -1870,9 +1905,9 @@ msgstr "Hedef konumu belirtilmedi" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "Toplu" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "Oluşturuldu" @@ -1985,11 +2020,11 @@ msgstr "Ekler" msgid "Build Notes" msgstr "Yapım İşi Notları" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "{name.title()} Dosya" msgid "Select {name} file to upload" msgstr "{name} dosyasını yüklemek için seçin" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "Anahtar dizesi benzersiz olmalı" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Şirket adı" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "Ana URL" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Varsayılan Para Birimi" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "günler" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "URL'den indir" -#: common/models.py:1245 +#: common/models.py:1284 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:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Barkod Desteği" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "DPN Regex" -#: common/models.py:1358 +#: common/models.py:1397 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:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "Yinelenen DPN'ye İzin Ver" -#: common/models.py:1362 +#: common/models.py:1401 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:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "DPN Düzenlemeye İzin Ver" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "Kategori Paremetre Sablonu Kopyala" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "Parça oluştururken kategori parametre şablonlarını kopyala" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Şablon" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "Parçaları varsayılan olan şablondur" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Montaj" -#: common/models.py:1404 +#: common/models.py:1443 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:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Bileşen" -#: common/models.py:1410 +#: common/models.py:1449 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:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Satın Alınabilir" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "Parçalar varsayılan olarak satın alınabilir" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Satılabilir" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "Parçalar varsayılan olarak satılabilir" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Takip Edilebilir" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "Parçalar varsayılan olarak takip edilebilir" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Sanal" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "Parçalar varsayılan olarak sanaldır" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "İlgili parçaları göster" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "Hata Ayıklama Modu" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Sayfa Boyutu" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "PDF raporlar için varsayılan sayfa boyutu" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "Formlarda Miktarı Göster" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Fiyat" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "Aktif" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "Resim" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "Şirket web sitesi" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Telefon numarası" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "İletişim telefon numarası" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "İletişim e-posta adresi" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "İletişim" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "müşteri mi" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "Bu şirkete ürün satıyor musunuz?" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "tedarikçi mi" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "Bu şirketten ürün satın alıyor musunuz?" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "üretici mi" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "Bu şirket üretim yapıyor mu?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "Bu şirket için varsayılan para birimi" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Temel Parça" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "Parça seçin" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "Parça seçin" msgid "Manufacturer" msgstr "Üretici" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Üretici seçin" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "Üretici seçin" msgid "MPN" msgstr "ÜPN" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "Üretici Parça Numarası" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "Parametre adı" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Değer" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "Parametre değeri" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "Tedarikçi" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Tedarikçi seçin" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "Not" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "temel maliyet" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Paketleme" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "çoklu" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "Müşteri" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4133,7 +4249,7 @@ msgstr "" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "Resmi İndirin" +msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "Şirketler" msgid "New Company" msgstr "Yeni Şirket" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "Etiket adı" @@ -4500,7 +4620,7 @@ msgstr "Etiket" msgid "Label template file" msgstr "Etiket şablon listesi" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "Etkin" @@ -4524,7 +4644,7 @@ msgstr "Yükseklik [mm]" msgid "Label height, specified in mm" msgstr "Etiket yüksekliği mm olarak belirtilmeli" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "Dosya Adı Deseni" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "Filtreler" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "Harici sayfaya bağlantı" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "Oluşturan" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "Sipariş referansı" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Tahsis miktarı stok miktarını aşamaz" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "Seri numaralı stok kalemi için miktar bir olmalı" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "Stok tahsis miktarını girin" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "DPN" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Revizyon" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Anahtar kelimeler" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Çeşidi" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimum Stok" @@ -5575,33 +5792,26 @@ msgstr "Minimum Stok" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Varsayılan Konum" @@ -5690,380 +5900,375 @@ msgstr "Varsayılan Konum" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "Parça Kategorileri" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "Bu kategori içindeki parçalar için varsayılan konum" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "Parça adı" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "Şablon Mu" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "Bu parça bir şablon parçası mı?" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "Bu parça başka bir parçanın çeşidi mi?" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "Parça revizyon veya versiyon numarası" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Varsayılan Tedarikçi" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "Varsayılan tedarikçi parçası" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "Bu parça diğer parçalardan yapılabilir mi?" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "Bu parça diğer parçaların yapımında kullanılabilir mi?" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "Bu parça dış tedarikçilerden satın alınabilir mi?" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "Bu parça müşterilere satılabilir mi?" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "Bu parça aktif mi?" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "Oluşturan Kullanıcı" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "Test şablonları sadece takip edilebilir paçalar için oluşturulabilir" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "Test Adı" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "Test Açıklaması" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Gerekli" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "Testi geçmesi için bu gerekli mi?" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "Parametre şablon adı benzersiz olmalıdır" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Parametre Şablonu" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Bu malzeme listesi, çeşit parçalar listesini kalıtsalıdır" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Çeşide İzin Ver" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Çeşit parçaların stok kalemleri bu malzeme listesinde kullanılabilir" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,13 +7330,9 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" -msgstr "Hesapla" +msgstr "" #: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "İşlem belirtilmedi" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Eşleşen eylem bulunamadı" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "Şablon için geçerli bir nesne sağlanmadı" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "Şablon adı" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "Rapor şablon dosyası" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "Rapor şablon tanımı" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "Revizyon numarası raporla (otomatik artış)" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "Rapor şablonu etkin" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Stok kalemi sorgu filtreleri (anahter=değer [key=value] olarak virgülle ayrılmış liste)" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Seri No" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "Stok Konumu" msgid "Stock Locations" msgstr "Stok Konumları" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "Seri numarası olan ögenin miktarı bir olmalı" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Miktar birden büyük ise seri numarası ayarlanamaz" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "Üst Stok Kalemi" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "Bu stok kalemi için tedarikçi parçası seçin" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "Bu öge için seri numarası" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "Seri numaraları tam sayı listesi olmalı" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "Miktar seri numaları ile eşleşmiyor" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "Seri numaraları zaten mevcut" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "Stok kalemi stokta olmadığı için taşınamaz" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "İşlem notu ekle (isteğe bağlı)" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Yapım İşi" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "Konum ayarlanmadı" @@ -8973,7 +9249,7 @@ msgstr "Bu işlem kolayca geri alınamaz" #: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" -msgstr "Stok Kalemine Dönüştür" +msgstr "" #: stock/templates/stock/item_base.html:662 msgid "Return to Stock" @@ -9166,7 +9442,7 @@ msgstr "" #: templates/InvenTree/index.html:148 msgid "Required for Build Orders" -msgstr "Yapım İşi Emirleri için Gerekli" +msgstr "" #: templates/InvenTree/index.html:156 msgid "Expired Stock" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -9603,17 +9874,17 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:285 msgid "No category parameter templates found" -msgstr "Kategori parametre şablonu bulunamadı" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 #: templates/js/translated/part.js:1645 msgid "Edit Template" -msgstr "Şablonu Düzenle" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 #: templates/js/translated/part.js:1646 msgid "Delete Template" -msgstr "Şablonu Sil" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:326 msgid "Edit Category Parameter Template" @@ -9621,15 +9892,15 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:353 msgid "Delete Category Parameter Template" -msgstr "Kategori Parametre Şablonu Sil" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:388 msgid "Create Category Parameter Template" -msgstr "Kategori Parametre Şablonu Oluştur" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:418 msgid "Create Part Parameter Template" -msgstr "Parça Parametre Şablonu Oluştur" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:440 msgid "No stock location types found" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10272,7 +10543,7 @@ msgstr "" #: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" -msgstr "Cevap Yok" +msgstr "" #: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" @@ -10300,7 +10571,7 @@ msgstr "" #: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "Bu fonksiyona erişmek için gerekli izinlere sahip değilsiniz" +msgstr "" #: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" @@ -10364,7 +10635,7 @@ msgstr "" #: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "Ek Düzenle" +msgstr "" #: templates/js/translated/attachment.js:346 msgid "Upload Date" @@ -10458,7 +10729,7 @@ msgstr "" #: templates/js/translated/barcode.js:691 msgid "Stock Item already in this location" -msgstr "Stok kalemi zaten bu konumda" +msgstr "" #: templates/js/translated/barcode.js:698 msgid "Added stock item" @@ -10482,12 +10753,12 @@ msgstr "" #: templates/js/translated/barcode.js:806 msgid "Check Into Location" -msgstr "Konuma Kaydet" +msgstr "" #: templates/js/translated/barcode.js:875 #: templates/js/translated/barcode.js:884 msgid "Barcode does not match a valid location" -msgstr "Barkod geçerli bir konumla eşleşmiyor" +msgstr "" #: templates/js/translated/bom.js:78 msgid "Create BOM Item" @@ -10523,7 +10794,7 @@ msgstr "" #: templates/js/translated/bom.js:357 msgid "Levels" -msgstr "Seviyeler" +msgstr "" #: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" @@ -10567,7 +10838,7 @@ msgstr "" #: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" -msgstr "Dışa aktarılan malzeme listesine parça tedarikçisi verilerini dahil edin" +msgstr "" #: templates/js/translated/bom.js:395 msgid "Include Pricing Data" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,9 +10963,9 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" -msgstr "Gerekli Parça" +msgstr "" #: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" -msgstr "Yapım işi emri eksik" +msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" -msgstr "Tamamlanmış Yapım İşi Emri" +msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" -msgstr "Bu Malzeme Listesi takip edilebilir parçalar içeriyor" +msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" -msgstr "Takip edilebilir parçaların seri numaraları belirtilmiş olmalı" +msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "Birden çok tek yapım işi çıktısı oluşturmak için seri numaraları girin" +msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" -msgstr "Yapım İşi Çıktısı Oluştur" +msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "Parçaları Seçin" +msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" -msgstr "Stok tahsisini düzenle" +msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" -msgstr "Stok tahsisini sil" +msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11228,7 +11499,7 @@ msgstr "" #: templates/js/translated/company.js:1557 templates/js/translated/part.js:798 #: templates/js/translated/part.js:1210 msgid "Template part" -msgstr "Şablon Parça" +msgstr "" #: templates/js/translated/company.js:1273 #: templates/js/translated/company.js:1561 templates/js/translated/part.js:802 @@ -11258,7 +11529,7 @@ msgstr "" #: templates/js/translated/company.js:1486 msgid "Delete supplier parts" -msgstr "Tedarikçi parçalarını sil" +msgstr "" #: templates/js/translated/company.js:1536 msgid "No supplier parts found" @@ -11274,11 +11545,11 @@ msgstr "" #: templates/js/translated/company.js:1715 msgid "Edit supplier part" -msgstr "Tedarikçi parçasını düzenle" +msgstr "" #: templates/js/translated/company.js:1716 msgid "Delete supplier part" -msgstr "Tedarikçi parçasını sil" +msgstr "" #: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 @@ -11309,12 +11580,12 @@ msgstr "" #: templates/js/translated/filters.js:186 #: templates/js/translated/filters.js:672 msgid "true" -msgstr "doğru" +msgstr "" #: templates/js/translated/filters.js:190 #: templates/js/translated/filters.js:673 msgid "false" -msgstr "yanlış" +msgstr "" #: templates/js/translated/filters.js:214 msgid "Select filter" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11440,7 +11707,7 @@ msgstr "" #: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "Etiket Bulunamadı" +msgstr "" #: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" @@ -11811,15 +12078,15 @@ msgstr "" #: templates/js/translated/part.js:1281 msgid "No variants found" -msgstr "Çeşit bulunamadı" +msgstr "" #: templates/js/translated/part.js:1599 msgid "No part parameter templates found" -msgstr "Parça parametre şablonu bulunamadı" +msgstr "" #: templates/js/translated/part.js:1662 msgid "Edit Part Parameter Template" -msgstr "Parça Parametre Şablonu Düzenle" +msgstr "" #: templates/js/translated/part.js:1674 msgid "Any parameters which reference this template will also be deleted" @@ -11827,7 +12094,7 @@ msgstr "" #: templates/js/translated/part.js:1682 msgid "Delete Part Parameter Template" -msgstr "Parça Parametre Şablonu Sil" +msgstr "" #: templates/js/translated/part.js:1716 #: templates/js/translated/purchase_order.js:1651 @@ -11868,7 +12135,11 @@ msgstr "" #: templates/js/translated/part.js:2235 msgid "Set category" -msgstr "Kategori ayarla" +msgstr "" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" #: templates/js/translated/part.js:2288 msgid "parts" @@ -11876,7 +12147,7 @@ msgstr "" #: templates/js/translated/part.js:2384 msgid "No category" -msgstr "Katagori Yok" +msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2640 @@ -11905,7 +12176,7 @@ msgstr "" #: templates/js/translated/part.js:2854 msgid "No test templates matching query" -msgstr "Sorgu ile eşleşen test şablonu bulunamadı" +msgstr "" #: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436 msgid "Edit test result" @@ -12234,7 +12505,7 @@ msgstr "" #: templates/js/translated/sales_order.js:851 #: templates/js/translated/sales_order.js:1011 msgid "Items" -msgstr "Ürünler" +msgstr "" #: templates/js/translated/purchase_order.js:1840 msgid "All selected Line items will be deleted" @@ -12285,11 +12556,11 @@ msgstr "" #: templates/js/translated/report.js:71 msgid "Select Report Template" -msgstr "Rapor Şablonu Seç" +msgstr "" #: templates/js/translated/report.js:86 msgid "Select Test Report Template" -msgstr "Test Raporu Şablonu Seç" +msgstr "" #: templates/js/translated/report.js:140 msgid "No Reports Found" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12465,7 +12736,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1270 msgid "Confirm stock allocation" -msgstr "Stok tahsisini onayla" +msgstr "" #: templates/js/translated/sales_order.js:1271 msgid "Allocate Stock Items to Sales Order" @@ -12481,7 +12752,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1583 msgid "Confirm Delete Operation" -msgstr "Silme İşlemini Onayla" +msgstr "" #: templates/js/translated/sales_order.js:1584 msgid "Delete Stock Allocation" @@ -12500,14 +12771,14 @@ msgstr "" #: templates/js/translated/sales_order.js:2008 msgid "Allocate serial numbers" -msgstr "Seri numaralarını tahsis et" +msgstr "" #: templates/js/translated/sales_order.js:2012 msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12521,9 +12792,9 @@ msgstr "" #: templates/js/translated/sales_order.js:2109 msgid "Allocate Serial Numbers" -msgstr "Seri Numaralarını Tahsis Et" +msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12573,7 +12844,7 @@ msgstr "" #: templates/js/translated/stock.js:202 msgid "Edit Stock Location" -msgstr "Stok konumunu düzenle" +msgstr "" #: templates/js/translated/stock.js:217 msgid "New Stock Location" @@ -12589,7 +12860,7 @@ msgstr "" #: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" -msgstr "Bu stok konumunu silmek istediğinizden emin misiniz?" +msgstr "" #: templates/js/translated/stock.js:241 msgid "Move to parent stock location" @@ -12597,7 +12868,7 @@ msgstr "" #: templates/js/translated/stock.js:250 msgid "Delete Stock Location" -msgstr "Stok Konumunu Sil" +msgstr "" #: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -12761,7 +13032,7 @@ msgstr "" #: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" -msgstr "Stok ayarlamasını onayla" +msgstr "" #: templates/js/translated/stock.js:1360 msgid "PASS" @@ -12813,7 +13084,7 @@ msgstr "" #: templates/js/translated/stock.js:1754 msgid "No stock location set" -msgstr "Stok konumu ayarlanmadı" +msgstr "" #: templates/js/translated/stock.js:1810 msgid "Change stock status" @@ -12821,11 +13092,11 @@ msgstr "" #: templates/js/translated/stock.js:1819 msgid "Merge stock" -msgstr "Stok birlşetirme" +msgstr "" #: templates/js/translated/stock.js:1868 msgid "Delete stock" -msgstr "Parça sil" +msgstr "" #: templates/js/translated/stock.js:1923 msgid "stock items" @@ -12922,7 +13193,7 @@ msgstr "" #: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "Detaylar" +msgstr "" #: templates/js/translated/stock.js:2821 msgid "No changes" @@ -12934,7 +13205,7 @@ msgstr "" #: templates/js/translated/stock.js:2855 msgid "Location no longer exists" -msgstr "Konum artık yok" +msgstr "" #: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" @@ -13059,7 +13330,7 @@ msgstr "" #: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" -msgstr "Çeşit Stokuna İzin Ver" +msgstr "" #: templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:775 @@ -13069,11 +13340,11 @@ msgstr "" #: templates/js/translated/table_filters.js:234 #: templates/js/translated/table_filters.js:345 msgid "Include sublocations" -msgstr "Alt konumları dahil et" +msgstr "" #: templates/js/translated/table_filters.js:235 msgid "Include locations" -msgstr "Konumları dahil et" +msgstr "" #: templates/js/translated/table_filters.js:267 msgid "Has location type" @@ -13093,34 +13364,34 @@ msgstr "" #: templates/js/translated/table_filters.js:298 #: templates/js/translated/table_filters.js:380 msgid "Is Serialized" -msgstr "Seri Numaralı" +msgstr "" #: templates/js/translated/table_filters.js:301 #: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" -msgstr "Seri numarası BvE" +msgstr "" #: templates/js/translated/table_filters.js:302 #: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" -msgstr "Seri numarası büyük veya eşit" +msgstr "" #: templates/js/translated/table_filters.js:305 #: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" -msgstr "Seri numarası KvE" +msgstr "" #: templates/js/translated/table_filters.js:306 #: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" -msgstr "Seri numarası küçük veya eşit" +msgstr "" #: templates/js/translated/table_filters.js:309 #: templates/js/translated/table_filters.js:310 #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "Seri numarası" +msgstr "" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 @@ -13154,7 +13425,7 @@ msgstr "" #: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" -msgstr "Alt konumlardaki stoku dahil et" +msgstr "" #: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" @@ -13164,21 +13435,17 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" #: templates/js/translated/table_filters.js:365 msgid "Include Variants" -msgstr "Çeşitleri Dahil Et" +msgstr "" #: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" -msgstr "Çeşit parçaların stok kalemlerini dahil et" +msgstr "" #: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" @@ -13239,7 +13506,7 @@ msgstr "" #: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" -msgstr "Alt kategorilerdeki parçaları dahil et" +msgstr "" #: templates/js/translated/table_filters.js:713 msgid "Show active parts" @@ -13260,7 +13527,7 @@ msgstr "" #: templates/js/translated/table_filters.js:734 msgid "Has IPN" -msgstr "DPN Var" +msgstr "" #: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" @@ -13284,11 +13551,11 @@ msgstr "" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "Takvim görünümünü görüntüle" +msgstr "" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "Liste görünümünü görüntüle" +msgstr "" #: templates/js/translated/tables.js:112 msgid "Display tree view" @@ -13324,39 +13591,39 @@ msgstr "" #: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "Gösteriliyor" +msgstr "" #: templates/js/translated/tables.js:539 msgid "to" -msgstr "için" +msgstr "" #: templates/js/translated/tables.js:539 msgid "of" -msgstr "yüzünden" +msgstr "" #: templates/js/translated/tables.js:539 msgid "rows" -msgstr "satırlar" +msgstr "" #: templates/js/translated/tables.js:546 msgid "No matching results" -msgstr "Sonuç bulunamadı" +msgstr "" #: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" -msgstr "Sayfalandırmayı Göster" +msgstr "" #: templates/js/translated/tables.js:555 msgid "Toggle" -msgstr "Değiştir" +msgstr "" #: templates/js/translated/tables.js:558 msgid "Columns" -msgstr "Sütunlar" +msgstr "" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "Tümü" +msgstr "" #: templates/navbar.html:45 msgid "Buy" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "Evet" msgid "No" msgstr "Hayır" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "Kullanıcılar" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "Bu gruba atanacak kullanıcıyı seçin" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "Kullanıcı bilgisi" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "Yetkiler" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "Önemli tarihler" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "İzinleri ayarla" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "Grup" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "Görünüm" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "Parçayı görüntüleme izni" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "Parça ekleme izni" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "Değiştir" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Parçaları düzenleme izni" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "Parçaları silme izni" diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po index 540fb15d23..33c3d201e0 100644 --- a/InvenTree/locale/vi/LC_MESSAGES/django.po +++ b/InvenTree/locale/vi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "API endpoint không tồn tại" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "Người dùng không được phân quyền xem mẫu này" @@ -43,7 +43,7 @@ msgstr "Số lượng cung cấp không hợp lệ" msgid "Invalid quantity supplied ({exc})" msgstr "Số lượng cung cấp không hợp lệ ({exc})" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "Chi tiết lỗi có thể được tìm thấy trong bảng quản trị" @@ -51,18 +51,18 @@ msgstr "Chi tiết lỗi có thể được tìm thấy trong bảng quản tr msgid "Enter date" msgstr "Nhập ngày" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "Địa chỉ email chính đã cung cấp không hợp lệ." msgid "The provided email domain is not approved." msgstr "Miền email được cung cấp không được phê duyệt." -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "Đăng ký bị vô hiệu hóa." -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "Số lượng cung cấp không hợp lệ" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "Chuỗi số sê-ri trống" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "Trùng lặp sê-ri" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Phạm vi nhóm không hợp lệ: {group}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Khoảng nhóm {group} vượt cho phép số lượng ({expected_quantity})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Thứ tự nhóm không hợp lệ: {group}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "Không tìm thấy số sê-ri" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Số sê ri duy nhất ({len(serials)}) phải phù hợp số lượng ({expected_quantity})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "Xóa thẻ HTML từ giá trị này" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "Lỗi kết nối" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "Máy chủ phản hồi với mã trạng thái không hợp lệ" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "Xảy ra Exception" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "Máy chủ đã phản hồi với giá trị Content-Length không hợp lệ" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "Hình ảnh quá lớn" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "Tải xuống hình ảnh vượt quá kích thước tối đa" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "Máy chủ trả về phản hồi trống" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "URL được cung cấp không phải là tệp hình ảnh hợp lệ" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] Đăng nhập vào ứng dụng" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "Tiếng Bulgaria" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "Tiếng Séc" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "Tiếng Đan Mạch" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "Tiếng Đức" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "Tiếng Hy Lạp" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "Tiếng Anh" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "Tiếng Tây Ban Nha" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "Tiếng Tây Ban Nha (Mê-hi-cô)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "Tiếng Ba Tư" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "Tiếng Phần Lan" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "Tiếng Pháp" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "Tiếng Do Thái" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "Tiếng Ấn Độ" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "Tiếng Hung-ga-ri" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "Tiếng Ý" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "Tiếng Nhật" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "Tiếng Hàn" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "Tiếng Hà Lan" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "Tiếng Na Uy" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "Tiếng Ba Lan" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "Tiếng Bồ Đào Nha" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "Tiếng Bồ Đào Nha (Brazil)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "Tiếng Nga" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "Tiếng Slo-va-ki-a" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "Tiếng Slô-ven-ni-a" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "Tiếng Serbia" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "Tiếng Thụy Điển" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "Tiếng Thái" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "Tiếng Thổ Nhĩ Kỳ" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "Tiếng Việt" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "Tiếng Trung (Giản thể)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "Tiếng Trung (Phồn thể)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "[{site_name}] Đăng nhập vào ứng dụng" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "Email" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Siêu dữ liệu phải là đối tượng từ điển của python" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "Phụ trợ siêu dữ liệu" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "Trường siêu dữ liệu JSON, được sử dụng bởi phụ trợ bên ngoài" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "Mẫu được định dạng không thích hợp" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "Khóa định dạng không rõ ràng đã được chỉ định" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "Thiếu khóa định dạng cần thiết" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "Trường tham chiếu không thể rỗng" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "Tham chiếu phải phù hợp với mẫu yêu cầu" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "Số tham chiếu quá lớn" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "Tập tin bị thiếu" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "Thiếu liên kết bên ngoài" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Đính kèm" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "Chọn file đính kèm" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "Chọn file đính kèm" msgid "Link" msgstr "Liên kết" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "Liên kết đến URL bên ngoài" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Bình luận" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "Bình luận tệp tin" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "Người dùng" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "Ngày tải lên" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "Tên tập tin không được để trống" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "Thư mục đính kèm không hợp lệ" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Tên tập tin chứa ký tự không hợp lệ '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "Tên tệp tin thiếu phần mở rộng" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "Tên của tệp đính kèm này đã tồn tại" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "Lỗi khi đổi tên tệp tin" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "Tên trùng lặp không thể tồn tại trong cùng cấp thư mục" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Lựa chọn sai" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "Lựa chọn sai" msgid "Name" msgstr "Tên" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,273 +531,149 @@ msgstr "Tên" msgid "Description" msgstr "Mô tả" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "Mô tả (tùy chọn)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "thư mục cha" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "Đường dẫn" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Ghi chú markdown (không bắt buộc)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "Dữ liệu mã vạch" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "Dữ liệu mã vạch của bên thứ ba" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "Dữ liệu băm mã vạch" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "Chuỗi băm duy nhất của dữ liệu mã vạch" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "Mã vạch đã tồn tại" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "Lỗi máy chủ" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "Lỗi đã được ghi lại bởi máy chủ." -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "Phải là một số hợp lệ" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Tiền tệ" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Chọn tiền tệ trong các tùy chọn đang có" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "Bạn không có quyền thay đổi vai trò của người dùng này." -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "Chỉ có siêu người dùng là có thể tạo người dùng mới" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" -msgstr "Chào mừng đến với {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." +msgstr "Tài khoản của bạn đã được tạo." -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." -msgstr "Tài khoản của bạn đã được tạo.\n\n" -"Xin hãy sử dụng chức năng quên mật khẩu để truy cập (tại https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" +msgstr "Xin hãy sử dụng chức năng tạo lại mật khẩu để đăng nhập" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "Chào mừng đến với InvenTree" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "Tên tập tin" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "Giá trị không hợp lệ" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "Tập tin dữ liệu" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "Chọn tệp tin để tải lên" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "Loại tệp tin không được hỗ trợ" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "Tệp tin quá lớn" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "Không tìm thấy cột nào trong tệp tin" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "Không tìm thấy dòng nào trong tệp tin" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "Chưa có dữ liệu" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "Chưa cung cấp cột dữ liệu" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Thiếu cột bắt buộc: '{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Nhân bản cột: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "Hình ảnh từ xa" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "URL của tệp hình ảnh bên ngoài" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "Chức năng tải hình ảnh từ URL bên ngoài không được bật" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "Tiếng Bulgaria" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "Tiếng Séc" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "Tiếng Đan Mạch" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "Tiếng Đức" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "Tiếng Hy Lạp" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "Tiếng Anh" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "Tiếng Tây Ban Nha" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "Tiếng Tây Ban Nha (Mê-hi-cô)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "Tiếng Ba Tư" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "Tiếng Phần Lan" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "Tiếng Pháp" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "Tiếng Do Thái" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "Tiếng Ấn Độ" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "Tiếng Hung-ga-ri" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "Tiếng Ý" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "Tiếng Nhật" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "Tiếng Hàn" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "Tiếng Hà Lan" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "Tiếng Na Uy" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "Tiếng Ba Lan" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "Tiếng Bồ Đào Nha" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "Tiếng Bồ Đào Nha (Brazil)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "Tiếng Nga" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "Tiếng Slô-ven-ni-a" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "Tiếng Thụy Điển" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "Tiếng Thái" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "Tiếng Thổ Nhĩ Kỳ" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "Tiếng Việt" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "Tiếng Trung (Giản thể)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "Tiếng Trung (Phồn thể)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "Nhân công chạy ngầm kiểm tra thất bại" @@ -713,7 +722,7 @@ msgstr "Đã trả lại" msgid "In Progress" msgstr "Đang tiến hành" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -876,10 +885,6 @@ msgstr "Từ chối" msgid "Unknown database" msgstr "Không rõ cơ sở dữ liệu" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Đơn vị vật lý không hợp lệ" @@ -928,16 +933,16 @@ msgstr "Giới thiệu" msgid "Build must be cancelled before it can be deleted" msgstr "Bạn dựng phải được hủy bỏ trước khi có thể xóa được" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "Vật tư tiêu hao" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -949,18 +954,18 @@ msgstr "Tuỳ chọn" msgid "Tracked" msgstr "Đã theo dõi" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "Đã cấp phát" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -970,16 +975,16 @@ msgstr "Đã cấp phát" msgid "Available" msgstr "Có sẵn" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Tạo đơn hàng" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -990,27 +995,27 @@ msgstr "Tạo đơn hàng" msgid "Build Orders" msgstr "Tạo đơn hàng" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "Lựa chọn sai cho bản dựng cha" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "Sản phẩm đơn đặt bản dựng không thể thay đổi được" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "Tham chiếu đơn đặt bản dựng" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1018,27 +1023,27 @@ msgstr "Tham chiếu đơn đặt bản dựng" msgid "Reference" msgstr "Tham chiếu" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "Mô tả ngắn về phiên bạn (Tùy chọn)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Phiên bản cha" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "Đơn đặt bản dựng với bản dựng này đã được phân bổ" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1049,7 +1054,7 @@ msgstr "Đơn đặt bản dựng với bản dựng này đã được phân b #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1057,8 +1062,8 @@ msgstr "Đơn đặt bản dựng với bản dựng này đã được phân b #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1082,144 +1087,144 @@ msgstr "Đơn đặt bản dựng với bản dựng này đã được phân b msgid "Part" msgstr "Nguyên liệu" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "Chọn sản phẩm để xây dựng" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "Tham chiếu đơn đặt bản dựng" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "Đơn đặt bán hàng với bản dựng này đã được phân bổ" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "Địa điểm nguồn" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Chọn địa điểm để lấy trong kho cho bản dựng này (để trống để lấy từ bất kỳ vị trí kho nào)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "Địa điểm đích" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "Chọn địa điểm nơi hàng hóa hoàn thiện sẽ được lưu kho" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "Xây dựng số lượng" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "Số kho hàng để dựng" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "Những mục hoàn thành" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "Số sản phẩm trong kho đã được hoàn thiện" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "Trnạg thái bản dựng" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "Mã trạng thái bản dựng" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "Mã lô hàng" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "Mã lô cho đầu ra bản dựng này" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "Ngày tạo" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "Ngày hoàn thành mục tiêu" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Ngày mục tiêu để hoàn thành bản dựng. Bản dựng sẽ bị quá hạn sau ngày này." -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "Ngày hoàn thành" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "hoàn thành bởi" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "Cấp bởi" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "Người dùng người đã được phân công cho đơn đặt bản dựng này" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Chịu trách nhiệm" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "Người dùng hoặc nhóm có trách nhiệm với đơn đặt bản dựng này" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Liên kết bên ngoài" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "Độ ưu tiên" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "Độ quan trọng của đơn đặt bản dựng" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1228,52 +1233,52 @@ msgstr "Độ quan trọng của đơn đặt bản dựng" msgid "Project Code" msgstr "Mã dự án" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "Mã dự án cho đơn đặt bản dựng này" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Đơn đặt bản dựng {build} đã được hoàn thành" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "Một đơn đặt bản dựng đã được hoàn thành" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "Không có đầu ra bản dựng đã được chỉ ra" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "Đầu ra bản dựng đã được hoàn thiện" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "Đầu ra bản dựng không phù hợp với đơn đặt bản dựng" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "Số lượng phải lớn hơn 0" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "Số lượng không thể lớn hơn số lượng đầu ra" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "Dựng đối tượng" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1283,15 +1288,15 @@ msgstr "Dựng đối tượng" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1315,41 +1320,41 @@ msgstr "Dựng đối tượng" msgid "Quantity" msgstr "Số lượng" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "Yêu cầu số lượng để dựng đơn đặt" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Xây dựng mục phải xác định đầu ra, bởi vì sản phẩm chủ được đánh dấu là có thể theo dõi" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Số lượng được phân bổ ({q}) không thể vượt quá số lượng có trong kho ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "Kho hàng đã bị phân bổ quá đà" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "Số lượng phân bổ phải lớn hơn 0" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "Số lượng phải là 1 cho kho sê ri" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "Hàng trong kho đã chọn không phù hợp với đường BOM" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1361,89 +1366,89 @@ msgstr "Hàng trong kho đã chọn không phù hợp với đường BOM" msgid "Stock Item" msgstr "Kho hàng" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "Kho hàng gốc" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "Số lượng kho hàng cần chỉ định để xây dựng" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "Cài đặt vào" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "Kho hàng đích" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "Đầu ra bản dựng" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "Đầu ra xây dựng không hợp với bản dựng cha" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "Đầu ra sản phẩm không phù hợp với bản dựng đơn đặt hàng" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "Đầu ra bản dựng này đã được hoàn thành" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "Đầu ra bản dựng này chưa được phân bổ đầy đủ" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "Điền số lượng cho đầu ra bản dựng" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "Số lượng nguyên dương cần phải điền cho sản phẩm có thể theo dõi" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Cần nhập số lượng nguyên dương, bởi vì hóa đơn vật liệu chứa sản phẩm có thể theo dõi" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Số sê-ri" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "Nhập vào số sêri cho đầu ra bản dựng" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "Số sêri tự cấp" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "Tự động cấp số seri phù hợp cho hàng hóa được yêu cầu" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "Số sêri sau đây đã tồn tại hoặc không hợp lệ" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "Danh sách đầu ra bản dựng phải được cung cấp" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1456,32 +1461,32 @@ msgstr "Danh sách đầu ra bản dựng phải được cung cấp" msgid "Location" msgstr "Địa điểm" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "Vị trí kho cho đầu ra phế phẩm" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "Hủy phân bổ" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "Hủy bất kỳ phân kho nào cho đầu ra phế phẩm" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "Lý do loại bỏ đầu ra bản dựng" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "Vị trí cho đầu ra bản dựng hoàn thiện" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1491,159 +1496,188 @@ msgstr "Vị trí cho đầu ra bản dựng hoàn thiện" msgid "Status" msgstr "Trạng thái" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "Chấp nhận phân kho dang dở" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "Hoàn hiện đầu ra nếu kho chưa được phân bổ hết chỗ trống" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "Xóa phân kho" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "Trừ số lượng bất kỳ kho nào được phân bổ đến bản dựng này" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "Xóa toàn bộ đầu ra chưa hoàn thành" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "Xóa bất kỳ đầu ra bản dựng nào chưa được hoàn thành" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "Chưa được cấp phép" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "Chấp nhận trạng thái tiêu hao bởi đơn đặt bản dựng này" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "Phân bổ trước khi hoàn thiện đơn đặt bản dựng này" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "Kho quá tải" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Bạn muốn thế nào để xử lý hàng trong kho được gán thừa cho đơn đặt bản dựng" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "Một vài hàng hóa đã được phân bổ quá thừa" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "Chấp nhận chưa phân bổ được" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Chấp nhận hàng hóa không được phân bổ đầy đủ vào đơn đặt bản dựng này" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Kho được yêu cầu chưa được phân bổ hết không gian" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "Chấp nhận không hoàn thành" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "Chấp nhận số yêu cầu của đầu ra bản dựng chưa được hoàn thành" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "Số lượng bản dựng được yêu cầu chưa được hoàn thành" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Đơn đặt bản dựng có đầu ra chưa hoàn thiện" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "Lộ giới" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "Đầu ra bản dựng" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "Đầu ra bản dựng phải chỉ đến bản dựng tương ứng" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "Mục chi tiết bản dựng" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part phải trỏ đến phần tương tự của đơn đặt bản dựng" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "Hàng hóa phải trong kho" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Số lượng có sẵn ({q}) đã bị vượt quá" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "Đầu ra bản dựng phải được xác định cho việc phân sản phẩm được theo dõi" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Đầu ra bản dựng không thể chỉ định cho việc phân sản phẩm chưa được theo dõi" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "Hàng hóa phân bổ phải được cung cấp" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Vị trí kho nơi sản phẩm được lấy ra (để trống để lấy từ bất kỳ vị trí nào)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "Ngoại trừ vị trí" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "Không bao gồm hàng trong kho từ vị trí đã chọn này" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "Kho trao đổi" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Hàng trong kho thuộc nhiều vị trí có thể dùng thay thế được cho nhau" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "Kho thay thế" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "Cho phép phân kho sản phẩm thay thế" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "Mục tùy chọn" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "Phân bổ các mục hóa đơn vật liệu tùy chọn đến đơn đặt bản dựng" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "Mục BOM" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "Bật đơn hàng" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "Đang sản xuất" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "Số hàng tồn" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "Kho được yêu cầu cho đặt hàng bản dựng" @@ -1769,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Kho không được phân bổ đầy đủ với yêu cầu bản dựng này" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1807,8 +1841,8 @@ msgid "Completed Outputs" msgstr "Đầu ra hoàn thiện" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1830,21 +1864,21 @@ msgid "Issued By" msgstr "Phát hành bởi" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "Độ ưu tiên" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "Xóa đơn đặt bản dựng" +msgstr "" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "Mã QR đơn đặt bản dựng" +msgstr "" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "Liên kết mã vạch đến Đơn đặt bản dựng này" +msgstr "" #: build/templates/build/detail.html:15 msgid "Build Details" @@ -1858,7 +1892,7 @@ msgstr "Nguồn kho" msgid "Stock can be taken from any available location." msgstr "Kho có thể được lấy từ bất kỳ địa điểm nào." -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "Đích đến" @@ -1871,9 +1905,9 @@ msgstr "Địa điểm đích chưa được xác định" msgid "Allocated Parts" msgstr "Sản phẩm đã phân bổ" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1887,7 +1921,7 @@ msgstr "Hàng loạt" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "Đã tạo" @@ -1986,13 +2020,13 @@ msgstr "Tập tin đính kèm" msgid "Build Notes" msgstr "Ghi chép bản dựng" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" -msgstr "Phân bổ hoàn thành" +msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" -msgstr "Tất cả đường đã được chỉ định đầy đủ" +msgstr "" #: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" @@ -2044,1410 +2078,1431 @@ msgstr "Tập tin {name.title()}" msgid "Select {name} file to upload" msgstr "Chọn tập tin {name} để tải lên" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "Đã cập nhật" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Nhãn thời gian của lần cập cuối cùng" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "Mã dự án duy nhất" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "Mô tả dự án" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "Người dùng hoặc nhóm có trách nhiệm với dự án này" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "Khóa thiết lập (phải duy nhất - phân biệt hoa thường)" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "Giá trị cài đặt" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "Giá trị đã chọn không hợp lệ" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "Giá trị phải là kiểu boolean" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "Giá trị phải là một số nguyên dương" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "Chuỗi khóa phải duy nhất" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "Không có nhóm" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "Tên miền rỗng là không được phép." -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Tên miền không hợp lệ: {domain}" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "Không phần mở rộng" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "Cần khởi động lại" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "Một thiết lập đã bị thay đổi yêu cầu khởi động lại máy chủ" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "Chuyển dữ liệu chờ xử lý" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "Số đợt nâng cấp cơ sở dữ liệu chờ xử lý" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "Tên thực thể máy chủ" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "Mô tả chuỗi cho thực thể máy chủ" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "Sử dụng tên thực thể" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "Sử dụng tên thực thể trên thanh tiêu đề" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "Cấm hiển thị `giới thiệu`" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "Chỉ hiển thị cửa sổ `giới thiệu` với siêu người dùng" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "Tên công ty" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "Tên công ty nội bộ" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "URL cơ sở" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "URL cơ sở cho thực thể máy chủ" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "Tiền tệ mặc định" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "Chọn tiền tệ chính khi tính giá" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "Tần suất cập nhật tiền tệ" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "Mức độ thường xuyên để cập nhật tỉ giá hối đoái (điền 0 để tắt)" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "ngày" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "Phần mở rộng cập nhật tiền tệ" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "Phần mở rộng cập nhật tiền tệ được sử dụng" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "Tải về từ URL" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "Cho phép tải ảnh và tệp tin từ xa theo URL bên ngoài" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "Giới hạn kích thước tải xuống" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "Kích thước tải xuống tối đa với hình ảnh từ xa" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "User-agent được dùng để tải xuống theo URL" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "Cho phép ghi đè user-agent được dùng để tải về hình ảnh và tệp tin từ xa theo URL bên ngoài (để trống nghĩa là dùng mặc định)" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "Yêu cầu xác nhận" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "Yêu cầu người dùng xác nhận rõ ràng với một số chức năng nhất định." -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "Cấp độ cây" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "Độ sâu cây mặc định cho màn hình cây. Cấp độ sâu hơn sẽ sử dụng kỹ thuật tải chậm nếu cần thiết." -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "Thời gian kiểm tra bản cập nhật" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "Mức độ thường xuyên để kiểm tra bản cập nhật (điền 0 để tắt)" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "Sao lưu tự động" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "Bật tính năng sao lưu tự động cơ sở dữ liệu và tệp tin đa phương tiện" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "Khoảng thời gian sao lưu tự động" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "Xác định số ngày giữa các kỳ sao lưu tự động" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "Khoảng thời gian xóa tác vụ" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "Kết quả tác vụ chạy ngầm sẽ bị xóa sau số ngày được chỉ định" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "Khoảng thời gian xóa nhật ký lỗi" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "Nhật ký lỗi sẽ bị xóa sau số ngày được chỉ định" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "Khoảng thời gian xóa thông báo" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "Thông báo sẽ bị xóa sau số ngày được chỉ định" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Hỗ trợ mã vạch" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "Bật hỗ trợ máy quét mã vạch trong giao diện web" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "Độ trễ quét mã vạch" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "Thời gian trễ xử lý đầu đọc mã vạch" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "Hỗ trợ mã vạch qua webcam" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "Cho phép quét mã vạch qua webcam bên trong trình duyệt" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "Phiên bản Sản phẩm" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "Bật trường phiên bản cho sản phẩm" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "Mẫu IPN" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "Mẫu dùng nhanh phổ biến dành cho tìm IPN sản phẩm" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "Cho phép trùng IPN" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "Cho phép nhiều sản phẩm dùng IPN giống nhau" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "Cho phép sửa IPN" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "Cho phép đổi giá trị IPN khi sửa một sản phẩm" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "Sao chép dữ liệu BOM của sản phẩm" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "Sao chép dữ liệu BOM mặc định khi nhân bản 1 sản phẩm" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "Sao chép dữ liệu tham số sản phẩm" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "Sao chép dữ liệu tham số mặc định khi nhân bản 1 sản phẩm" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "Chép thông tin kiểm thử sản phẩm" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "Sao chép dữ liệu kiểm thử mặc định khi nhân bản 1 sản phẩm" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "Sao chéo mẫu tham số danh mục" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "Sao chéo mẫu tham số danh mục khi tạo 1 sản phẩm" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Mẫu" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "Sản phẩm là mẫu bởi mặc định" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Lắp ráp" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "Sản phẩm có thể lắp giáp từ thành phần khác theo mặc định" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Thành phần" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "Sản phẩm có thể được sử dụng mặc định như thành phần phụ" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "Có thể mua" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "Sản phẩm mặc định có thể mua được" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Có thể bán" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "Sản phẩm mặc định có thể bán được" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Có thể theo dõi" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "Sản phẩm mặc định có thể theo dõi được" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Ảo" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "Sản phẩm mặc định là số hóa" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "Hiển thị Nhập liệu trong khung xem" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "Hiển thị đồ thuật nhập dữ liệu trong một số khung nhìn sản phẩm" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "Hiển thị sản phẩm liên quan" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "Hiện sản phẩm liên quan cho 1 sản phẩm" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "Số liệu tồn kho ban đầu" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "Cho phép tạo tồn kho ban đầu khi thêm 1 sản phẩm mới" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Dữ liệu nhà cung cấp ban đầu" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Cho phép tạo dữ liệu nhà cung cấp ban đầu khi thêm 1 sản phẩm mới" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "Định dạng tên sản phẩm hiển thị" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "Định dạng để hiển thị tên sản phẩm" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "Biểu tượng mặc định của danh mục sản phẩm" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "Biểu tượng mặc định của danh mục sản phẩm (để trống nghĩa là không có biểu tượng)" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "Bắt buộc đơn vị tham số" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "Nếu đơn vị được cung cấp, giá trị tham số phải phù hợp với các đơn vị xác định" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "Vị trí phần thập phân giá bán tối thiểu" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Số vị trí thập phân tối thiểu cần hiển thị khi tạo dữ liệu giá" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "Vị trí phần thập phân giá bán tối đa" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Số vị trí thập phân tối đa cần hiển thị khi tạo dữ liệu giá" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "Sử dụng giá bán nhà cung cấp" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Bao gồm giá phá vỡ cả nhà cung cấp trong tính toán giá tổng thể" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "Ghi đè lịch sử mua hàng" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Giá đơn hàng đặt mua trước đó ghi đè giá phá vỡ của nhà cung cấp" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "Sử dụng giá hàng hóa trong kho" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Dùng giá bán từ dữ liệu kho nhập vào thủ công đối với bộ tính toán giá bán" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "Tuổi giá kho hàng" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Loại trừ hàng hóa trong kho cũ hơn số ngày ngày từ bảng tính giá bán" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "Sử dụng giá biến thể" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "Bao gồm giá biến thể trong bộ tính toán giá tổng thể" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "Chỉ các biến thể hoạt động" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "Chỉ sử dụng sản phẩm biến thể hoạt động để tính toán giá bán biến thể" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "Tần suất tạo lại giá" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "Số ngày trước khi giá sản phẩm được tự động cập nhật" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "Giá nội bộ" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "Bật giá nội bộ cho sản phẩm" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "Ghi đè giá nội bộ" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "Nếu khả dụng, giá nội bộ ghi đè tính toán khoảng giá" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "Bật in tem nhãn" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "Bật chức năng in tem nhãn từ giao diện web" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "DPI hỉnh ảnh tem nhãn" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "Độ phân giải DPI khi tạo tệp hình ảnh để cung cấp cho plugin in ấn tem nhãn" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "Bật báo cáo" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "Cho phép tạo báo cáo" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "Chế độ gỡ lỗi" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "Tạo báo cáo trong chế độ gỡ lỗi (đầu ra HTML)" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "Khổ giấy" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "Kích thước trang mặc định cho báo cáo PDF" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "Bật báo cáo kiểm thử" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "Cho phép tạo báo cáo kiểm thử" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "Đính kèm báo cáo kiểm thử" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Khi in một báo cáo kiểm thử, đính kèm một bản sao của báo cáo kiểm thử với hàng trong kho đã được kết hợp" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "Sê ri toàn cục duy nhất" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "Số sê ri cho hàng trong kho phải là duy nhất trong toàn hệ thống" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "Tự động điền số sê ri" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "Tự động điền số sê ri vào biểu mẫu" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "Xóa kho đã hết hàng" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "Nhận dạng hành vi mặc định khi hàng trong kho bị hết" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "Mẫu sinh mã theo lô" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "Mẫu tạo mã theo lô mặc định cho hàng trong kho" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "Quá hạn trong kho" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "Bật chức năng quá hạn tồn kho" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "Bán kho quá hạn" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "Cho phép bán hàng kho quá hạn" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "Thời gian hàng cũ trong kho" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "Số ngày hàng trong kho được xác định là cũ trước khi quá hạn" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "Dựng kho quá hạn" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "Cho phép xây dựng với kho hàng quá hạn" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "Kiểm soát sở hữu kho" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "Bật chức năng kiểm soát sở hữu kho với địa điểm và hàng trong kho" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "Biểu tượng địa điểm kho mặc định" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "Biểu tượng địa điểm kho hàng mặc định (trống nghĩa là không có biểu tượng)" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "Hiển thị hàng hóa đã lắp đặt" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "Hiển thị hàng trong kho đã được lắp đặt trên bảng kho" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "Mã tham chiếu đơn đặt bản dựng" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "Mẫu bắt buộc cho để trường tham chiếu đơn đặt bản dựng" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "Bật đơn hàng trả lại" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "Bật chức năng đơn hàng trả lại trong giao diện người dùng" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "Mẫu tham chiếu đơn hàng trả lại" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "Mẫu bắt buộc để tạo trường tham chiếu đơn hàng trả lại" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "Sửa đơn hàng trả lại đã hoàn thành" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "Cho phép sửa đơn hàng trả lại sau khi đã hoàn thành rồi" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "Mẫu tham chiếu đơn đặt hàng" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "Mẫu bắt buộc để tạo trường tham chiếu đơn đặt hàng" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "Vận chuyển mặc định đơn đặt hàng" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "Cho phép tạo vận chuyển mặc định với đơn đặt hàng" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "Sửa đơn đặt hàng đã hoàn thành" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Cho phép sửa đơn đặt hàng sau khi đã vận chuyển hoặc hoàn thành" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "Mẫu tham chiếu đơn đặt mua" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "Mẫu bắt buộc cho để trường tham chiếu đơn đặt mua" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "Sửa đơn đặt mua đã hoàn thành" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Cho phép sửa đơn đặt mua sau khi đã vận chuyển hoặc hoàn thành" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" -msgstr "" +msgstr "Tự động hoàn thành đơn đặt mua" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "Bật quên mật khẩu" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "Bật chức năng quên mật khẩu trong trang đăng nhập" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "Bật đăng ký" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "Cho phép người dùng tự đăng ký tại trang đăng nhập" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "Bật SSO" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "Cho phép SSO tại trang đăng nhập" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "Bật đăng ký SSO" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Cho phép người dùng tự đăng ký SSO tại trang đăng nhập" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "Yêu cầu email" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "Yêu cầu người dùng cung cấp email để đăng ký" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "Người dùng tự động điền SSO" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "Tự động điền thông tin chi tiết từ dữ liệu tài khoản SSO" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "Thư 2 lần" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "Khi đăng ký sẽ hỏi người dùng hai lần thư điện tử của họ" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "Mật khẩu 2 lần" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "Khi đăng ký sẽ hỏi người dùng hai lần mật khẩu của họ" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "Các tên miền được phép" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Cấm đăng ký với 1 số tên miền cụ thể (dấu phẩy ngăn cách, bắt đầu với dấu @)" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "Nhóm khi đăng ký" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "Nhóm được gán cho người dùng mới khi đăng ký" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "Bắt buộc MFA" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "Người dùng phải sử dụng bảo mật đa nhân tố." -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "Kiểm tra phần mở rộng khi khởi động" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Kiểm tra toàn bộ phần mở rộng đã được cài đặt khi khởi dộng - bật trong môi trường ảo hóa" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "Kiểm tra cập nhật plugin" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "Bật tích hợp URL" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "Bật phần mở rộng để thêm định tuyến URL" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "Bật tích hợp điều hướng" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "Bật phần mở rộng để tích hợp thanh định hướng" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "Bật tích hợp ứng dụng" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "Bật phần mở rộng để thêm ứng dụng" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "Cho phép tích hợp lập lịch" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "Bật phẩn mở rộng để chạy các tác vụ theo lịch" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "Bật tích hợp nguồn cấp sự kiện" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "Bật phần mở rộng để trả lời sự kiện bên trong" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "Bật mã dự án" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "Bật mã dự án để theo dõi dự án" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "Chức năng kiểm kê" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Bật chức năng kiểm kê theo mức độ ghi nhận kho và tính toán giá trị kho" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "Ngoại trừ vị trí bên ngoài" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "Loại trừ hàng trong kho thuộc địa điểm bên ngoài ra khỏi tính toán kiểm kê" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "Giai đoạn kiểm kê tự động" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Số ngày giữa ghi chép kiểm kê tự động (đặt không để tắt)" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "Khoảng thời gian xóa báo cáo" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Báo cáo kiểm kê sẽ bị xóa sau số ngày xác định" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "Hiển thị tên đầy đủ của người dùng" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "Hiển thị tên đầy đủ thay vì tên đăng nhập" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "Khóa thiết lập (phải duy nhất - phân biệt hoa thường" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "Ẩn sản phẩm ngừng hoạt động" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Ẩn sản phẩm bị tắt trong kết quả trình bày tại trang chủ" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "Hiện sản phẩm đã đăng ký" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "Hiện sản phẩm đã đăng ký trên trang chủ" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "Hiện danh mục đã đăng ký" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "Hiện danh mục sản phẩm đã đăng ký trên trang chủ" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "Hiển thị nguyên liệu mới nhất" -#: common/models.py:1997 +#: common/models.py:2042 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:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "Hiển thị BOM chưa được xác thực" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "Hiện BOM chờ xác thực tại trang chủ" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "Hiện thay đổi kho hàng gần đây" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "Hiện hàng trong kho được thay đổi gần nhất trên trang chủ" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "Hiển thị hàng còn ít" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "Hiển thị hàng hóa còn ít tại trang chủ" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "Hiển thị hết hàng" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "Hiển thị hàng hóa đã bán hết tại trang chủ" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "Hiển thị hàng cần thiết" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "Hiện hàng trong kho cần thiết cho xây dựng tại trang chủ" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "Bán kho quá hạn" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "Hiển thị hàng hóa đã quá hạn trên trang chủ" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "Hiện kho hàng ế" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "Hiện hàng trong kho bị ế trên trang chủ" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "Hiện bản dựng chờ xử lý" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "Hiện bản dựng chờ xử lý trên trang chủ" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "Hiện bản dựng quá hạn" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "Hiện bản dựng quá hạn trên trang chủ" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "Hiện PO nổi bật" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "Hiện PO nổi bật trên trang chủ" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "Hiện PO quá hạn" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "Hiện đơn mua hàng quá hạn trên trang chủ" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "Hiện đơn hàng vận chuyển nổi bật" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "Hiện đơn hàng vận chuyển nổi bật tại trang chủ" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "Hiện đơn vận chuyển quá hạn" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "Hiện đơn vận chuyển quá hạn trên trang chủ" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "Hiện đơn vận chuyển chờ xử lý" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "Hiện đơn vận chuyển chờ xử lý trên trang chủ" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "Hiện tin tức" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "Hiện tin tức trên trang chủ" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "Hiển thị nhãn cùng dòng" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Hiển thị nhãn PDF trong trình duyệt, thay vì tải về dạng tệp tin" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "Máy in tem nhãn mặc định" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "Cấu hình máy in tem nhãn nào được chọn mặc định" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "Hiển thị báo cáo cùng hàng" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Hiện báo cáo PDF trong trình duyệt, thay vì tải về dạng tệp tin" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "Tìm sản phẩm" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "Hiện hàng hóa trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "Tìm sản phẩm nhà cung cấp" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "Hiện sản phẩm nhà cung cấp trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "Tìm sản phẩm nhà sản xuất" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "Hiện sản phẩm nhà sản xuất trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "Ẩn sản phẩm ngừng hoạt động" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "Loại trừ sản phẩm ngưng hoạt động trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "Tìm kiếm danh mục" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "Hiện danh mục sản phẩm trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "Tìm kiếm kho" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "Hiện hàng hóa ở kho trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "Ẩn hàng hóa trong kho không có sẵn" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "Không bao gồm hàng hóa trong kho mà không sẵn sàng từ màn hình xem trước tìm kiếm" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "Tìm kiếm vị trí" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "Hiện vị trí kho hàng trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "Tìm kiếm công ty" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "Hiện công ty trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "Tìm kiếm đặt hàng xây dựng" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "Hiện đơn đặt xây dựng trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "Tìm kiếm đơn đặt mua" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "Hiện đơn đặt mua trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "Loại trừ đơn đặt mua không hoạt động" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "Loại trừ đơn đặt mua không hoạt động ra khỏi cửa sổ xem trước tìm kiếm" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "Tìm đơn đặt hàng người mua" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "Hiện đơn đặt hàng người mua trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "Loại trừ đơn đặt hàng người mua không hoạt động" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "Không bao gồm đơn đặt hàng người mua không hoạt động trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "Tìm kiếm đơn hàng trả lại" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "Hiện đơn hàng trả lại trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "Loại trừ đơn hàng trả lại không hoạt động" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "Không bao gồm đơn hàng trả lại không hoạt động trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "Kết quả xem trước tìm kiếm" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "Số kết quả cần hiển thị trong từng phần của cửa sổ xem trước tìm kiếm" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "Tìm kiếm biểu thức" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "Bật tìm kiếm biểu thức chính quy trong câu truy vấn tìm kiếm" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "Tìm phù hợp toàn bộ chữ" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "Truy vấn tìm trả về kết quả phù hợp toàn bộ chữ" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "Hiện số lượng trong biểu mẫu" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "Hiển thị số lượng sản phẩm có sẵn trong một số biểu mẫu" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "Phím escape để đóng mẫu biểu" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "Sử dụng phím escape để đóng mẫu biểu hộp thoại" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "Cố định điều hướng" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "Vị trí thành điều hướng là cố định trên cùng màn hình" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "Định dạng ngày" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "Định dạng ưa chuộng khi hiển thị ngày" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Lập lịch sản phẩm" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "Hiển thị thông tin lịch sản phẩm" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Kiểm kê sản phẩm" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Hiển thị thông tin kiểm kê sản phẩm (nếu chức năng kiểm kê được bật)" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "Độ dài chuỗi trong bảng" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "Giới hạn độ dài tối đa cho chuỗi hiển thị trong kiểu xem bảng biểu" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "Mẫu nhãn sản phẩm mặc định" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "Mẫu nhãn sản phẩm mặc định được chọn tự động" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "Mẫu hàng hóa trong khi mặc định" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "Mẫu nhãn hàng hóa trong kho tự động được chọn" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "Mẫu nhãn vị trí kho mặc định" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "Mẫu nhãn vị trí kho được chọn tự động" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "Nhận báo cáo lỗi" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "Nhận thông báo khi có lỗi hệ thống" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "Số lượng giá phá vỡ" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "Giá" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "Đơn vị giá theo số lượng cụ thể" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "Đầu mối" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "Đầu mối tại điểm webhook được nhận" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "Tên của webhook này" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3455,101 +3510,101 @@ msgstr "Tên của webhook này" msgid "Active" msgstr "Hoạt động" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "Webhook có hoạt động không" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "Chữ ký số" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "Chữ ký số để truy cập" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "Bí mật" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "Mã bí mật dùng chung cho HMAC" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "Mã Tin nhắn" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "Định danh duy nhất cho tin nhắn này" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "Máy chủ" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "Mãy chủ từ tin nhắn này đã được nhận" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "Đầu mục" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "Đầu mục tin nhắn" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "Thân" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "Thân tin nhắn này" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "Đầu mối của tin nhắn này đã nhận được" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "Làm việc vào" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "Công việc trong tin nhắn này đã kết thúc?" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "Mã" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Tiêu đề" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "Đã công bố" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "Tác giả" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "Tóm tắt" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "Đọc" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "Tin này đã được đọc?" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3559,31 +3614,31 @@ msgstr "Tin này đã được đọc?" msgid "Image" msgstr "Hình ảnh" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "Tệp ảnh" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "Tên đơn vị phải là một định danh hợp lệ" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "Tên đơn vị" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Biểu tượng" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "Biểu tượng đơn vị tùy chọn" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Định nghĩa" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "Định nghĩa đơn vị" @@ -3621,6 +3676,66 @@ msgstr "Hàng đã nhận theo đơn hàng trả lại" msgid "Error raised by plugin" msgstr "Lỗi được thông báo bởi phần mở rộng" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "Đang chạy" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "Công việc chờ xử lý" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "Tác vụ theo lịch" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "Tác vụ thất bại" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "ID tác vụ" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "ID tác vụ duy nhất" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "Khoá" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "Thời gian khóa" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "Tên công việc" + +#: common/serializers.py:372 +msgid "Function" +msgstr "Chức năng" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "Tên chức năng" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "Đối số" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "Đối số công việc" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "Đối số từ khóa" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "Đối số từ khóa công việc" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3659,184 +3774,184 @@ msgstr "Hàng hóa đã được nhập vào" msgid "Previous Step" msgstr "Bước trước" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "Mô tả công ty" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "Mô tả của công ty" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "Trang web" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "URL trang web của công ty" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "Số điện thoại" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "Số điện thoại liên hệ" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "Địa chỉ email liên hệ" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Liên hệ" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "Đầu mối liên hệ" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "Liên kết đến thông tin công ty ngoài" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "là khách hàng" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "Bạn có bán hàng cho công ty này?" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "là nhà cung cấp" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "Bạn có mua hàng từ công ty này?" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "là nhà sản xuất" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "Công ty này có sản xuất sản phẩm?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "Tiền tệ mặc định dùng cho công ty này" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Doanh nghiêp" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "Chọn doanh nghiệp" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "Tiêu đề địa chỉ" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "Tiêu đề mô tả mục địa chỉ" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "Địa chỉ chính" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "Đặt làm địa chỉ chính" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "Dòng 1" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "Địa chỉ dòng 1" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "Dòng 2" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "Địa chỉ dòng 2" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "Mã bưu chính" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "Thành phố/Vùng" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "Mã bưu chính thành phố/vùng" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "Bang/Tỉnh" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "Bang hay tỉnh" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "Quốc gia" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "Địa chỉ quốc gia" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "Ghi chú vận chuyển" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "Ghi chú dành cho chuyển phát nhanh" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "Ghi chú nội bọ chuyển phát nhanh" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "Ghi chú nội bộ sử dụng cho chuyển phát nhanh" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "Liên kết thông tin địa chỉ (bên ngoài)" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Sản phẩm cơ bản" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "Chọn sản phẩm" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3848,11 +3963,11 @@ msgstr "Chọn sản phẩm" msgid "Manufacturer" msgstr "Nhà sản xuất" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "Chọn nhà sản xuất" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3863,67 +3978,67 @@ msgstr "Chọn nhà sản xuất" msgid "MPN" msgstr "MPN" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "Mã số nhà sản xuất" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "URL cho liên kết sản phẩm của nhà sản xuất bên ngoài" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "Mô tả sản phẩm của nhà sản xuất" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Sản phẩm nhà sản xuất" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "Tên tham số" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Giá trị" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "Giá trị tham số" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "Đơn vị" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "Đơn vị tham số" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "Đơn vị đóng gói phải tương thích với đơn vị sản phẩm cơ bản" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "Đơn vị đóng gói phải lớn hơn không" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "Sản phẩm nhà sản xuất đã liên kết phải tham chiếu với sản phẩm cơ bản tương tự" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3938,58 +4053,58 @@ msgstr "Sản phẩm nhà sản xuất đã liên kết phải tham chiếu vớ msgid "Supplier" msgstr "Nhà cung cấp" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "Chọn nhà cung cấp" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "Đơn vị quản lý kho nhà cung cấp" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "Chọn sản phẩm của nhà sản xuất" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "URL cho liên kết sản phẩm của nhà cung cấp bên ngoài" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "Mô tả sản phẩm nhà cung cấp" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "Ghi chú" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "chi phí cơ sở" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "Thu phí tối thiểu (vd: phí kho bãi)" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Đóng gói" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "Đóng gói sản phẩm" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3999,27 +4114,27 @@ msgstr "Đóng gói sản phẩm" msgid "Pack Quantity" msgstr "Số lượng gói" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "Tổng số lượng được cung cấp trong một gói đơn. Để trống cho các hàng hóa riêng lẻ." -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "nhiều" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "Đặt hàng nhiều" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "Số lượng có sẵn từ nhà cung cấp" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "Sẵn hàng đã được cập nhật" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "Ngày cập nhật cuối thông tin tồn kho" @@ -4081,10 +4196,10 @@ msgstr "Tải hình ảnh từ URL" msgid "Delete image" msgstr "Xóa ảnh" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4099,7 +4214,7 @@ msgstr "Khách hàng" msgid "Uses default currency" msgstr "Dùng tiền mặc định" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4117,7 +4232,7 @@ msgstr "Xoá hình ảnh" #: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" -msgstr "Xóa ảnh đã gắn kết với doanh nghiệp này" +msgstr "Xóa hình ảnh gắn với công ty này" #: company/templates/company/company_base.html:208 #: part/templates/part/part_base.html:531 @@ -4129,7 +4244,7 @@ msgstr "Xóa" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "Tải ảnh lên" +msgstr "Tải hình lên" #: company/templates/company/company_base.html:252 #: part/templates/part/part_base.html:614 @@ -4317,7 +4432,7 @@ msgstr "Tham số mới" #: company/templates/company/manufacturer_part.html:206 #: templates/js/translated/part.js:1422 msgid "Add Parameter" -msgstr "Thêm tham số" +msgstr "Thêm thông số" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" @@ -4344,7 +4459,7 @@ msgid "Addresses" msgstr "Địa chỉ" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4441,12 +4556,12 @@ msgstr "Liên kết mã vạch đến hàng hóa nhà cung cấp" #: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" -msgstr "Cập nhật sự sẵn sàng sản phẩm" +msgstr "Cập nhật độ sẵn sàng sản phẩm" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4485,6 +4600,10 @@ msgstr "Doanh nghiệp" msgid "New Company" msgstr "Doanh nghiệp mới" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "Tên nhãn" @@ -4501,7 +4620,7 @@ msgstr "Nhãn" msgid "Label template file" msgstr "Tệp mẫu nhãn" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "Đã bật" @@ -4525,7 +4644,7 @@ msgstr "Chiều cao [mm]" msgid "Label height, specified in mm" msgstr "Chiều cao nhãn, tính theo mm" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "Mẫu tên tệp" @@ -4539,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "Truy vấn bộ lọc (dùng dấu phẩy ngăn cách các cặp key=value)" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "Bộ lọc" @@ -4557,7 +4676,108 @@ msgstr "Mã QR" msgid "QR code" msgstr "Mã QR" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "Không rõ" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4570,7 +4790,7 @@ msgstr "Tổng tiền" msgid "No matching purchase order found" msgstr "Không tìm thấy đơn đặt mua phù hợp" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4584,7 +4804,7 @@ msgstr "Không tìm thấy đơn đặt mua phù hợp" msgid "Purchase Order" msgstr "Đơn hàng" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4593,192 +4813,188 @@ msgstr "Đơn hàng" msgid "Return Order" msgstr "Đơn hàng trả lại" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "Không rõ" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "Tổng tiền cho đơn hàng hàng" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "Tiền tệ đơn đặt hàng" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "Tiền tệ cho đơn đặt này (để trống để sử dụng tiền mặc định)" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "Liên hệ không phù hợp với doanh nghiệp đã chọn" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "Mô tả đơn đặt (tùy chọn)" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "Mã dự án đã chọn cho đơn đặt hàng này" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "Liên kết đến trang bên ngoài" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Ngày mong muốn giao được hàng. Đơn đặt sẽ quá hạn sau ngày này." -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "Tạo bởi" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "Người dùng hoặc nhóm có trách nhiệm với đơn đặt này" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "Đầu mối liên hệ của đơn đặt này" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "Địa chỉ công ty cho đơn đặt này" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "Mã đặt hàng" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "Trạng thái đơn đặt mua" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "Doanh nghiệp từ những hàng hóa đang được đặt mua" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "Tham chiếu nhà cung cấp" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "Mã tham chiếu đơn đặt nhà cung cấp" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "nhận bởi" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "Ngày phát hành" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "Ngày đặt hàng đã phát hành" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "Ngày đặt hàng đã được hoàn thiện" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "Nhà cung cấp sản phẩm phải trùng với nhà cung cấp PO" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "Số lượng phải là số dương" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "Doanh nghiệp từ những hàng hóa đang được bán" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "Tham chiếu khách hàng " -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "Mã tham chiếu đơn đặt của khách hàng" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "Ngày giao hàng" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "vận chuyển bằng" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "Đơn đặt hàng không thể hoàn thiện vì chưa có sản phẩm nào được chọn" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "Những đơn hàng đang mở thì sẽ được đánh dấu là hoàn thành" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "Đơn hàng không thể hoàn thành được vì vận chuyển chưa xong" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "Đơn hàng không thể hoàn thành được vì những khoản riêng chưa xong" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "Số lượng mặt hàng" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "Tham chiếu khoản riêng" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "Ghi chú khoản riêng" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "Ngày mục tiêu cho khoản riêng này (để trống để sử dụng ngày mục tiêu từ đơn đặt)" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "Mô tả khoản riêng (tùy chọn)" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "Ngữ cảnh" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "Ngữ cảnh bổ sung" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "Đơn giá" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "Sản phẩm nhà cung cấp phải phù hợp với nhà cung cung cấp" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "đã bị xóa" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "Đặt hàng" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "Sản phẩm nhà cung cấp" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4788,325 +5004,325 @@ msgstr "Sản phẩm nhà cung cấp" msgid "Received" msgstr "Đã nhận" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "Số mục đã nhận" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Giá mua" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "Giá đơn vị mua" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "Có phải người mua hàng muốn mặt hàng này được tích trữ?" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "Không thể gán sản phẩm ảo vào trong đơn đặt bán hàng" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "Chỉ có thể gán sản phẩm có thể bán vào đơn đặt bán hàng" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Giá bán" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "Giá bán đơn vị" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "Số lượng đã vận chuyển" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "Ngày vận chuyển" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "Ngày giao hàng" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "Ngày giao hàng của vận chuyển" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "Kiểm tra bởi" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "Người dùng đã kiểm tra vận chuyển này" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Vận chuyển" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "Mã vận chuyển" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "Số theo dõi" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "Thông tin theo dõi vận chuyển" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "Mã hóa đơn" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "Số tham chiếu liên kết với hóa đơn" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "Vận đơn đã được gửi đi" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "Vận đơn chưa có hàng hóa được phân bổ" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "Hàng trong kho chưa được giao" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "Không thể phân bổ hàng hóa vào cùng với dòng với sản phẩm khác" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "Không thể phân bổ hàng hóa vào một dòng mà không có sản phẩm nào" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Số lượng phân bổ không thể vượt quá số lượng của kho" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "Số lượng phải là 1 cho hàng hóa sêri" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "Đơn bán hàng không phù hợp với vận đơn" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "Vận đơn không phù hợp với đơn bán hàng" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "Dòng" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "Tham chiếu vận đơn của đơn hàng bán" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "Hàng hóa" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "Chọn hàng trong kho để phân bổ" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "Nhập số lượng phân kho" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "Tham chiếu đơn hàng trả lại" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "Công ty có hàng hóa sẽ được trả lại" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "Trạng thái đơn hàng trả lại" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "Chỉ hàng hóa thêo sêri mới có thể được gán vào đơn hàng trả lại" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "Chọn hàng hóa để trả lại từ khách hàng" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "Ngày nhận được" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "Ngày mà hàng hóa trả lại đã được nhận" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Kết quả" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "Kết quả cho hàng hóa dòng này" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "Chi phí gắn với hàng trả lại hoặc sửa chữa cho dòng hàng hóa này" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "Đơn đặt không thể bị hủy" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "Cho phép đơn đặt phải đóng lại cùng với các mục dòng hàng hóa chưa hoàn thành" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "Đơn đặt có dòng hàng hóa chưa hoàn thành" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "Đơn đặt là không được mở" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "Tiền tệ giá mua" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "Sản phẩm nhà cung cấp phải được chỉ định" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "Đơn đặt mua phải được chỉ định" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "Nhà cung cấp phải phù hợp với đơn đặt mua" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "Đơn đặt mua phải phù hợp với nhà cung cấp" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "Mục dòng" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "Mục dòng không phù hợp với đơn đặt mua" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "Chọn vị trí đích cho hàng hóa đã nhận" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "Nhập mã lô cho hàng trong kho đang đến" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "Nhập số sê ri cho hàng trong kho đang đến" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Mã vạch" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "Mã vạch đã quét" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "Mã vạch đã được dùng" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "Cần điền số nguyên cho sản phẩm có thể theo dõi" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "Dòng hàng hóa phải được cung cấp" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "Vị trí đích phải được chỉ ra" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "Giá trị mã vạch đã cung cấp phải duy nhất" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "Tiền tệ giá bán" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "Chưa cung cấp thông tin vận chuyển" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "Dòng hàng hóa chưa được gắn với đơn đặt này" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "Số lượng phải là số dương" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "Nhập số sê ri để phân bổ" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "Vận đơn đã được chuyển đi" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "Vận đơn không được gắn với đơn đặt này" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "Không tìm thấy số sê ri sau đây" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "Những số sê ri sau đây đã được phân bổ" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "Dòng riêng biệt đơn hàng trả lại" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "Line item không phù hợp với đơn hàng trả lại" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "Line item đã nhận được" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "Hàng hóa chỉ có thể được nhận theo đơn hàng đang trong tiến trình" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "Tiền tệ giá đồng hạng" @@ -5239,7 +5455,7 @@ msgstr "Mã QR đơn đặt mua" #: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" -msgstr "Liên kết mã vạch với đơn đặt mua" +msgstr "Liên kết mã vạch đến đơn đặt mua" #: order/templates/order/order_wizard/match_fields.html:9 #: part/templates/part/import_wizard/ajax_match_fields.html:9 @@ -5290,8 +5506,8 @@ msgstr "Lựa chọn trùng lặp" #: 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5432,7 +5648,7 @@ msgstr "Mã QR đơn hàng trả lại" #: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" -msgstr "Liên kết mã vạch với đơn hàng trả lại" +msgstr "" #: order/templates/order/return_order_sidebar.html:5 msgid "Order Details" @@ -5464,11 +5680,11 @@ msgstr "Vận đơn đã hoàn thành" #: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" -msgstr "Mã QR đơn bán hàng" +msgstr "" #: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" -msgstr "Liên kết Mã vạch đến Đơn hàng bán" +msgstr "" #: order/templates/order/sales_order_detail.html:18 msgid "Sales Order Items" @@ -5510,13 +5726,13 @@ msgstr "Cập nhật {part} giá đơn vị đến {price}" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "Cập nhật {part} giá đơn vị đến {price} và số lượng đến {qty}" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "ID sản phẩm" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "Tên sản phẩm" @@ -5524,20 +5740,20 @@ msgstr "Tên sản phẩm" msgid "Part Description" msgstr "Mô tả sản phẩm" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "IPN" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Phiên bản" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Từ khóa" @@ -5562,11 +5778,11 @@ msgstr "ID vị trí mặc định" msgid "Default Supplier ID" msgstr "ID nhà cung ứng mặc định" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Biến thể của" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Kho tối thiểu" @@ -5576,33 +5792,26 @@ msgstr "Kho tối thiểu" msgid "In Stock" msgstr "Còn hàng" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "Bật đơn hàng" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "Sử dụng trong" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "Đang dựng" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "Chi phí tối thiểu" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "Chi phí tối đa" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "ID cha" @@ -5615,7 +5824,7 @@ msgstr "Tên cha" msgid "Category Path" msgstr "Đưỡng dẫn danh mục" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5638,51 +5847,51 @@ msgstr "ID hàng hóa BOM" msgid "Parent IPN" msgstr "IPN cha" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "IPN sản phẩm" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Giá thấp nhất" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Giá cao nhất" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "Đơn đặt mua vào" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "Đơn hàng bán ra" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "Kho sản xuất bởi Đơn đặt bản dựng" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "Kho được yêu cầu cho đơn đặt bản dựng" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "Hợp lệ" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "Xác minh toàn bộ hóa đơn vật liệu" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "Tùy chọn này phải được chọn" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Điểm bán mặc định" @@ -5691,380 +5900,375 @@ msgstr "Điểm bán mặc định" msgid "Total Stock" msgstr "Tổng số lượng" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "Số hàng tồn" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "Số lượng đầu ra cho tính toán giá bán" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Danh mục sản phẩm" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "Danh mục sản phẩm" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "Vị trí mặc định cho sản phẩm trong danh mục này" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Cấu trúc" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Hàng hóa không được gán trực tiếp vào danh mục có cấu trúc nhưng có thể được gán vào danh mục con." -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "Từ khóa mặc định" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "Từ khóa mặc định cho sản phẩm trong danh mục này" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Biểu tượng" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "Biểu tượng (tùy chọn)" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "Bạn không thể thay đổi cấu trúc nhóm sản phẩm này vì một số sản phẩm đã được gắn với nó rồi!" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "Lựa chọn sai cho sản phẩm cha" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "Không thể dùng sản phẩm '{self}' trong BOM cho '{parent}' (đệ quy)" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "Sản phẩm '{parent}' được dùng trong BOM cho '{self}' (đệ quy)" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "IPN phải phù hợp mẫu biểu thức chính quy {pattern}" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "Hàng trong kho với số sê ri này đã tồn tại" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "IPN trùng lặp không được cho phép trong thiết lập sản phẩm" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "Sản phẩm với Tên, IPN và Duyệt lại đã tồn tại." -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "Sản phẩm không thể được phân vào danh mục sản phẩm có cấu trúc!" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "Tên sản phẩm" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "Là Mẫu" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "Sản phẩm này có phải là sản phẩm mẫu?" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "Đây có phải là 1 biến thể của sản phẩm khác?" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "Mô tả (không bắt buộc)" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "Từ khóa sản phẩm để cải thiện sự hiện diện trong kết quả tìm kiếm" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "Danh mục" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "Danh mục sản phẩm" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "Mã sản phẩm nội bộ" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "Số phiên bản hoặc bản duyệt lại sản phẩm" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "Hàng hóa này sẽ được cất vào đâu?" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Nhà cung ứng mặc định" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "Nhà cung ứng sản phẩm mặc định" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "Hết hạn mặc định" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "Thời gian hết hạn (theo ngày) để nhập kho hàng hóa cho sản phẩm này" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "Cấp độ kho tối thiểu được phép" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "Đơn vị đo cho sản phẩm này" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "Sản phẩm này có thể được dựng từ sản phẩm khác?" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "Sản phẩm này có thể dùng để dựng các sản phẩm khác?" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "Sản phẩm này có đang theo dõi cho hàng hóa duy nhất?" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "Sản phẩm này có thể mua được từ nhà cung ứng bên ngoài?" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "Sản phẩm này có thể được bán cho khách hàng?" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "Sản phẩm này đang hoạt động?" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "Đây là sản phẩm ảo, ví dụ như sản phẩm phần mềm hay bản quyền?" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "Giá trị tổng kiểm BOM" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "Giá trị tổng kiểm BOM đã được lưu" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "BOM kiểm tra bởi" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "Ngày kiểm tra BOM" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "Tạo người dùng" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "Trách nhiệm chủ sở hữu cho sản phẩm này" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Kiểm kê cuối cùng" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "Bán nhiều" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "Tiền được dùng để làm đệm tính toán giá bán" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "Chi phí BOM tối thiểu" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "Chi phí thành phần sản phẩm tối thiểu" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "Chi phí BOM tối đa" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "Chi phí thành phần sản phẩm tối đa" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "Chi phí mua vào tối thiểu" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "Chi phí mua vào tối thiểu trong lịch sử" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "Chi phí mua tối đa" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "Chi phí thành phần sản phẩm tối đa trong lịch sử" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "Giá nội bộ tối thiểu" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "Chi phí tối thiểu dựa trên phá vỡ giá nội bộ" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "Giá nội bộ tối đa" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "Chi phí tối đa dựa trên phá vỡ giá nội bộ" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "Giá nhà cung ứng tối thiểu" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "Giá sản phẩm tối thiểu từ nhà cung ứng bên ngoài" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "Giá nhà cung ứng tối đa" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "Giá sản phẩm tối đã từ nhà cung ứng bên ngoài" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "Giá trị biến thể tối thiểu" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "Chi phí tối thiểu của sản phẩm biến thể đã tính" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "Chi phí biến thể tối đa" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "Chi phí tối đa của sản phẩm biến thể đã tính" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "Ghi đề chi phí tối thiểu" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "Ghi đề chi phí tối đa" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "Chi phí tối thiểu tính toán tổng thể" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "Chi phí tối đa tính toán tổng thể" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "Giá bán thấp nhất" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "Giá bán tối thiểu dựa trên phá giá" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "Giá bán cao nhất" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "Giá bán cao nhất dựa trên phá giá" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "Chi phí bán hàng tối thiểu" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "Giá bán hàng tối thiểu trong lịch sử" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "Giá bán hàng tối đa" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "Giá bán hàng tối đa trong lịch sử" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "Sản phẩm dành cho kiểm kê" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "Tổng số hàng" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "Số mục kho độc lậo tại thời điểm kiểm kê" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "Tống số kho tại thời điểm kiểm kê" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6076,322 +6280,318 @@ msgstr "Tống số kho tại thời điểm kiểm kê" msgid "Date" msgstr "Ngày" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "Kiểm kê đã thực hiện" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "Ghi chú bổ sung" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "Người dùng đã thực hiện đợt kiểm kê này" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "Chi phí kho tối thiểu" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "Chi phí kho tối thiểu ước tính của kho đang có" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "Chi phí kho tối đa" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "Chi phí kho tối đa ước tính của kho đang có" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Báo cáo" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "Tệp báo cáo kiểm kê (được sinh nội bộ)" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Bộ đếm sản phẩm" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "Số sản phẩm đã được bao quát bởi kiểm kê" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "Người dùng đã yêu cầu báo cáo kiểm kê này" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "Chỉ có thể tạo mẫu kiểm thử cho sản phẩm có thể theo dõi" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "Kiểm thử với tên này đã tồn tại cho sản phẩm này" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "Tên kiểm thử" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "Nhập tên cho kiểm thử" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "Mô tả kiểm thử" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "Nhập mô tả cho kiểm thử này" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Bắt buộc" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "Kiểm thử này bắt buộc phải đạt?" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "Giá trị bắt buộc" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "Kiểm thử này yêu cầu 1 giá trị khi thêm một kết quả kiểm thử?" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "Yêu cầu đính kèm" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "Kiểm thử này yêu cầu tệp đính kèm khi thêm một kết quả kiểm thử?" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "Tham số hộp kiểm tra không thể có đơn vị" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "Tham số hộp kiểm tra không thể có lựa chọn" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "Lựa chọn phải duy nhất" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "Tên tham số mẫu phải là duy nhất" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "Tên tham số" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "Đơn vị vật lý cho tham số này" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "Mô tả tham số" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "Ô lựa chọn" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "Tham số này có phải là hộp kiểm tra?" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "Lựa chọn" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "Lựa chọn hợp lệ từ tham số này (ngăn cách bằng dấu phẩy)" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "Lựa chọn sai cho giá trị tham số" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "Sản phẩm cha" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Mẫu tham số" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "Dữ liệu" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "Giá trị tham số" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Giá trị mặc định" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "Giá trị tham số mặc định" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "Tên hoặc mã sản phẩm" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "Giá trị mã sản phẩm duy nhất" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "Giá trị IPN sản phẩm" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "Cấp độ" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "Cấp độ BOM" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "Mục BOM" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "Chọn sản phẩm cha" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "Sản phẩm phụ" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "Chọn sản phẩm được dùng trong BOM" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "Số lượng BOM cho mục BOM này" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "Mục BOM này là tùy chọn" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "Mục BOM này bị tiêu hao (không được theo dõi trong đơn đặt bản dựng)" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Dư thừa" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Số lượng bản dựng lãng phí ước tính (tuyệt đối hoặc phần trăm)" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "Tham chiếu mục BOM" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "Ghi chú mục BOM" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "Giá trị tổng kiểm" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "Giá trị tổng kiểm dòng BOM" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Đã xác minh" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "Mục BOM này là hợp lệ" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "Nhận thừa hưởng" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Mục BOM này được thừa kế bởi BOM cho sản phẩm biến thể" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Cho phép biến thể" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Hàng trong kho cho sản phẩm biến thể có thể được dùng bởi mục BOM này" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "Số lượng phải là giá trị nguyên dùng cho sản phẩm có thể theo dõi được" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "Sản phẩm phụ phải được chỉ định" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "Sảm phẩm thay thế mục BOM" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "Sản phẩm thay thế không thể giống sản phẩm chủ đạo" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "Hàng hóa BOM cha" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "Sản phẩm thay thế" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "Sản phẩm 1" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "Sản phẩm 2" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "Chọn sản phẩm liên quan" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "Không thể tạo mối quan hệ giữa một sản phẩm và chính nó" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "Đã tồn tại mối quan hệ trùng lặp" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "Loại tiền mua hàng của hàng hóa này" @@ -6487,197 +6687,197 @@ msgstr "Mã số nhà sản xuất khớp với MPN này đã tồn tại" msgid "Supplier part matching this SKU already exists" msgstr "Mã số nhà cung cấp khớp với SKU này đã tồn tại" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Nhân bản sản phẩm" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "Sao chép dữ liệu ban đầu từ sản phẩm khác" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Số liệu kho ban đầu" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "Tạo sản phẩm với số lượng tồn kho ban đầu" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "Thông tin nhà cung cấp" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "Thêm thông tin nhà cung cấp ban đầu cho sản phẩm này" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "Sao chép thông số nhóm hàng" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "Sao chép mẫu tham số từ nhóm sản phẩm được chọn" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "Ảnh hiện có" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "Tên tệp của ảnh sản phẩm hiện hữu" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "Tệp hình ảnh không tồn tại" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "Hạn chế báo cáo kiểm kê với sản phẩm riêng biệt và sản phẩm biến thể bất kỳ" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "Hạn chế báo cáo kiểm kê với danh mục sản phẩm riêng biệt và danh mục con bất kỳ" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "Hạn chế báo cáo kiểm kê với vị trí kho riêng biệt và vị trí con bất kỳ" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "Ngoại trừ kho bên ngoài" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "Loại trừ hàng trong kho của vị trí bên ngoài" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "Tạo báo cáo" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "Tạo tệp báo cáo chứa dữ liệu kiểm kê đã tính toán" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "Cập nhật sản phẩm" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "Cập nhật sản phẩm cụ thể với dữ liệu kiểm kê đã tính" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "Chức năng kiểm kê chưa được bật" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "Giá trị tính toán ghi đè cho giá tối thiểu" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "Tiền tế giá tối thiểu" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "Giá trị tính toán ghi đè cho giá tối đa" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "Tiền tế giá tối đa" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "Cập nhật" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "Cập nhật giá cho sản phẩm này" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "Không thể chuyển đổi từ tiền tệ đã cung cấp cho {default_currency}" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "Giá tối thiểu không được lớn hơn giá tối đa" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "Giá tối đa không được nhỏ hơn giá tối thiểu" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "Chọn sản phẩm để sao chép định mức nguyên vật liệu" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "Xóa dữ liệu đã tồn tại" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "Xóa mục BOM đã tồn tại trước khi sao chép" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "Bao gồm thừa hưởng" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "Bao gồm mục BOM được thừa hưởng từ sản phẩm mẫu" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "Bỏ qua dòng không hợp lệ" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "Bật tùy chọn này để bỏ qua dòng không hợp lệ" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "Sao chép sản phẩm thay thế" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "Sao chép sản phẩm thay thế khi nhân bản hàng hóa BOM" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "Dọn dẹp BOM đang tồn tại" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "Xóa mục BOM đang tồn tại trước khi tải lên" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "Chưa chỉ ra cột sản phẩm" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "Tìm thấy nhiều sản phẩm phù hợp" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "Không tìm thấy sản phẩm nào" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "Sản phẩm không được chỉ định như là một thành phần" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "Chưa cung cấp số lượng" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "Số lượng không hợp lệ" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "Buộc phải nhập ít nhất một mục BOM" @@ -6838,7 +7038,7 @@ msgid "Add stocktake information" msgstr "Thêm thông tin kiểm kê" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -6940,15 +7140,15 @@ msgstr "Nhà sản xuất sản phẩm" #: part/templates/part/detail.html:659 msgid "Related Part" -msgstr "Sản phẩm liên quan" +msgstr "" #: part/templates/part/detail.html:667 msgid "Add Related Part" -msgstr "Thêm sản phẩm liên quan" +msgstr "" #: part/templates/part/detail.html:752 msgid "Add Test Result Template" -msgstr "Thêm mẫu kết quả kiểm thử" +msgstr "" #: part/templates/part/import_wizard/ajax_part_upload.html:29 #: part/templates/part/import_wizard/part_upload.html:14 @@ -7130,17 +7330,13 @@ msgstr "Mã QR sản phẩm" msgid "Link Barcode to Part" msgstr "Liên kết mã vạch đến sản phẩm" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "sản phẩm" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "Tính toán" #: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" -msgstr "Xóa hình ảnh gắn kết với sản phẩm này" +msgstr "Xóa ảnh gắn kết với sản phẩm này" #: part/templates/part/part_base.html:580 msgid "No matching images found" @@ -7248,7 +7444,7 @@ msgstr "Ghi đè định giá sản phẩm" msgid "Edit" msgstr "Sửa" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7402,11 +7598,15 @@ msgstr "Không tìm thấy ảnh sản phẩm" msgid "Part Pricing" msgstr "Định giá sản phẩm" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "Chưa chỉ ra hành động cụ thể" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "Không tìm thấy chức năng phù hợp" @@ -7464,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "Kho không đủ hạn mức khả dụng" @@ -7475,7 +7675,7 @@ msgstr "" #: plugin/base/barcodes/api.py:563 msgid "Not enough information" -msgstr "" +msgstr "Không đủ thông tin" #: plugin/base/barcodes/mixins.py:147 plugin/base/barcodes/mixins.py:179 msgid "Found multiple matching supplier parts for barcode" @@ -7557,12 +7757,24 @@ msgstr "" #: plugin/base/barcodes/serializers.py:171 msgid "Quantity to allocate" -msgstr "" +msgstr "Số lượng cần phân bổ" #: plugin/base/label/label.py:39 msgid "Label printing failed" msgstr "In nhãn thất bại" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "Mã vạch InvenTree" @@ -7575,6 +7787,7 @@ msgstr "Cung cấp hỗ trợ gốc cho mã vạch" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7643,6 +7856,22 @@ msgstr "Chế độ gỡ lỗi" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "Bật chế độ gỡ lỗi - trả về mã HTML thuần thay vì PDF" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "Khổ giấy cho tờ nhãn" @@ -7663,7 +7892,7 @@ msgstr "Viền" msgid "Print a border around each label" msgstr "In một viền xung quanh từng nhãn" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "Ngang" @@ -7735,84 +7964,112 @@ msgstr "Cung cấp khả năng quét mã vạch TME" msgid "The Supplier which acts as 'TME'" msgstr "Nhà cung cấp hoạt động như 'TME'" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" -msgstr "Quyền bị từ chối: chỉ người dùng là nhân viên mới có thể cài đặt phần mở rộng" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" +msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "Cài đặt phần mở rộng thành công" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "Cài đặt phần bổ sung đến {path}" -#: plugin/installer.py:203 -msgid "Plugin installation failed" -msgstr "Cài đặt phần bổ sung thất bại" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" +msgstr "" -#: plugin/models.py:29 +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" +msgstr "" + +#: plugin/models.py:30 msgid "Plugin Configuration" msgstr "Cấu hình phần bổ sung" -#: plugin/models.py:30 +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "Cấu hình phần bổ sung" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "Khóa" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "Khóa của phần bổ sung" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "Tên của phần bổ sung" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "Tên gói" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "Là phần bổ sung hoạt động" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "Đã cài đặt" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "Phần bổ sung mẫu" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "Plugin có sẵn" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Phần bổ sung" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "Phương thức" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "Không tìm thấy tác giả" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "Phần bổ sung '{p}' không tương thích với phiên bản InvenTree hiện tại {v}" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "Phần bổ sung yêu cầu ít nhất phiên bản {v}" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "Phần bổ sung yêu cầu tối đa phiên bản {v}" @@ -7857,70 +8114,84 @@ msgstr "Phần bổ sung trao đổi tiền tệ mẫu" msgid "InvenTree Contributors" msgstr "Người đóng góp InvenTree" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "URL nguồn" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Nguồn cấp cho gói - có thể là sổ đăng ký tùy chỉnh hoặc đường dẫn VCS" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "Tên gói" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Tên của gói bổ sung - có thể còn chứa chỉ dẫn phiên bản" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "Phiên bản" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "Xác nhận cài đặt phần bổ sung" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Sẽ cài đặt phần bổ sung này vào thực thể hiện tại. Thực thể sẽ chuyển sang chế độ bảo trì." -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "Cài đặt chưa được xác nhận" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "Hoặc là phải cung cấp tên gói của URL" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "Tải lại đầy đủ" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "Buộc tải lại" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "Kích hoạt phần bổ sung" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "Kích hoạt phần bổ sung này" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "Chưa cung cấp đối tượng hợp lệ cho bản mẫu" @@ -7950,103 +8221,103 @@ msgstr "Pháp lý" msgid "Letter" msgstr "Thư" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "Tên mẫu" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "Tệp mẫu báo cáo" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "Mô tả tệp mẫu báo cáo" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "Số phiên bản báo cáo (tự động tăng)" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "Khổ giấy cho báo cáo PDF" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "Tạo báo cáo theo hướng ngang" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "Quy tắc sinh tên tệp báo cáo" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "Mẫu báo cáo đang bật" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Truy vấn bộ lọc hàng trong kho (dùng dấu phẩy liệt kê các cặp key=value)" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "Bao gồm các đợt kiểm tra đã lắp đặt" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "Bao gồm kết quả kiểm tra cho hàng trong kho được cài đặt bên trong hàng hóa đã lắp ráp" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "Dựng bộ lọc" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Dựng bộ lọc truy vấn (dùng dấu phẩy liệt kê các cặp key=value" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "Bộ lọc sản phẩm" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Bộ lọc truy vấn sản phẩm (dùng dấu phẩy liệt kê các cặp key=value" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "Bộ lọc truy vấn đơn đặt mua" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "Bộ lọc truy vấn đơn hàng bán" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "Bộ lọc truy vấn đơn hàng trả lại" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "Mẫu trích" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "Tệp báo cáo mẫu" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "Mô tả tệp báo cáo mẫu" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "Tài sản" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "Tệp báo cáo tài sản" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "Mô tả tệp báo cáo tài sản" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "bộ lọc truy vấn vị trí kho (dùng dấu phẩy liệt kê các cặp key=value)" @@ -8087,9 +8358,9 @@ msgstr "Tổng cộng" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8113,12 +8384,12 @@ msgid "Test Results" msgstr "Kết quả kiểm tra" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "Thử nghiệm" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "Kết quả" @@ -8144,32 +8415,32 @@ msgid "Installed Items" msgstr "Mục đã cài đặt" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Sê-ri" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "Tệp tin tài sản không tồn tại" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "Không tìm thấy tệp hình ảnh" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "thẻ part_image yêu cầu 1 thực thể sản phẩm" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "thẻ company_image yêu cầu một thực thể doanh nghiệp" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "ID địa điểm" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "Tên địa điểm" @@ -8178,56 +8449,56 @@ msgstr "Tên địa điểm" msgid "Location Path" msgstr "Đường dẫn địa điểm" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "ID mặt hàng" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "Mã trạng thái" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "Sản phẩm nhà cung cấp" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "Tên nhà cung cấp" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "Tên nhà cung cấp" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "ID Khách hàng" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Đã cài đặt trong" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "ID bản dựng" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "ID đơn hàng bán" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "ID đơn đặt mua" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "Cần xem xét" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "Xóa khi thiếu hụt" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8237,56 +8508,56 @@ msgstr "Ngày hết hạn" msgid "External Location" msgstr "Địa điểm bên ngoài" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "Cây sản phẩm" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "Ngày hết hạn trước đó" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "Ngày hết hạn sau đó" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Ế" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "Bắt buộc nhập số lượng" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "Phải cung cấp sản phẩm hợp lệ" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "Sản phẩm nhà cung cấp đã đưa không tồn tại" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "Sản phẩm nhà cung cấp có kích thước đóng gói được định nghĩa nhưng cờ use_pack_size chưa được thiết lập" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Số sê-ri không thê được cung cấp cho sản phẩm không thể theo dõi" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "Loại vị trí kho hàng" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "Loại vị trí kho hàng" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "Biểu tượng mặc định cho vị trí không được đặt biểu tượng (tùy chọn)" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8298,12 +8569,12 @@ msgstr "Kho hàng" msgid "Stock Locations" msgstr "Vị trí kho hàng" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Chủ sở hữu" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "Chọn chủ sở hữu" @@ -8333,225 +8604,225 @@ msgstr "Loại vị trí kho hàng của địa điểm này" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "Bạn không thể chuyển đổi vị trí kho hàng này thành cấu trúc vì đã có hàng hóa trong kho được đặt vào bên trong nó!" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "Không thể đặt hàng trong kho vào trong địa điểm kho có cấu trúc!" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "Không thể tạo hàng hóa trong kho cho sản phẩm ảo" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "Loại sản phẩm ('{self.supplier_part.part}') phải là {self.part}" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "Số lượng phải là 1 cho hàng hóa với số sê ri" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Số sê ri không thể đặt được nếu số lượng lớn hơn 1" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "Hàng hóa không thể thuộc về chính nó" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "Hàng hóa phải có 1 tham chiếu bản dựng nếu is_building=True" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "Tham chiếu bản dựng không thể trỏ vào cùng một đối tượng sản phẩm" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "Hàng trong kho cha" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "Sản phẩm cơ bản" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "Chọn sản phẩm nhà cung cấp khớp với hàng hóa trong kho này" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "Hàng trong kho này được đặt ở đâu?" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "Đóng gói hàng hóa này được lưu trữ lại" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "Mục này đã được cài đặt trong mục khác?" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "Số sê ri cho mục này" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "Mã lô cho hàng trong kho này" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "Số lượng tồn kho" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "Bản dựng nguồn" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "Bản dựng cho hàng hóa này" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "Tiêu thụ bởi" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "Đơn đặt bản dựng đã dùng hàng hóa này" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "Đơn đặt mua nguồn" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "Đơn đặt mua cho hàng hóa này" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "Đơn hàng bán đích" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Ngày hết hạn của hàng hóa này. Kho sẽ được nhắc tình trạng hết hạn sau ngày này" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "Xóa khi thiếu hụt" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "Xóa hàng trong kho này khi kho hàng bị thiếu hụt" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "Giá mua riêng lẻ tại thời điểm mua" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "Đã chuyển đổi sang sản phẩm" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "Chưa đặt sản phẩm thành có thể theo dõi" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "Số lượng phải là số nguyên" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "Số lượng không thể vượt quá số lượng trong kho đang có ({self.quantity})" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "Số sêri phải là một danh sách dãy số nguyên" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "Số lượng không khớp với số sêri" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "Số sêri đã tồn tại" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "Hàng trong kho đã được gán vào đơn hàng bán" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "Hàng trong kho đã được cài đặt vào hàng hóa khác" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "Hàng trong kho chứa hàng hóa khác" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "Hàng trong kho đã được gắn với một khách hàng" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "Hàng trong kho hiện đang sản xuất" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "Không thể hợp nhất kho nối tiếp" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "Mặt hàng trùng lặp" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "Mặt hàng phải tham chiếu đến sản phẩm tương tự" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "Mặt hàng phải tham chiếu đến sản phẩm nhà cung cấp tương tự" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "Mã trạng thái kho phải phù hợp" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "Không thể xóa mặt hàng không ở trong kho" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "Ghi chú đầu vào" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "Phải cung cấp giá trị cho kiểm thử này" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "Phải tải liên đính kèm cho kiểm thử này" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "Tên kiểm thử" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "Kết quả kiểm thử" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "Giá trị đầu ra kiểm thử" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "Đính kèm kết quả kiểm thử" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "Ghi chú kiểm thử" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "Số sêri quá lớn" @@ -8559,157 +8830,161 @@ msgstr "Số sêri quá lớn" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "Sử dụng kích thước đóng gói khi thêm: Số lượng được định nghĩa là số của gói" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "Giá mua của mặt hàng, theo đơn vị hoặc gói" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "Nhập số của mặt hàng cần tạo số nối tiếp" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "Số lượng phải không vượt quá số lượng trong kho đang có ({q})" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "Điền số sêri cho hàng hóa mới" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "Vị trí kho đích" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "Trường ghi chú tùy chọn" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "Không thể gán số sêri cho sản phẩm này" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "Chọn mặt hàng để lắp đặt" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "Số lượng để cài đặt" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "Nhập số lượng hàng hóa để cài đặt" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "Thêm ghi chú giao dịch (tùy chọn)" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "Số lượng cần cài đặt phải ít nhất là 1" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "Mặt hàng không khả dụng" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "Sản phẩm đã chọn không có trong hóa đơn vật liệu" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "Số lượng cần lắp đặt phải không vượt quá số lượng đang có" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "Vị trí đích cho hàng hóa bị gỡ bỏ" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "Chọn sản phẩm để chuyển đổi mặt hàng vào bên trong" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "Sản phẩm đã chọn không phải là tùy chọn hợp lệ để chuyển đổi" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "Không thể chuyển đổi hàng hóa với sản phẩm nhà cung cấp đã gán" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "Vị trí đích dành cho hàng hóa trả lại" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "Chọn mặt hàng để đổi trạng thái" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "Không có mặt hàng nào được chọn" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "Sản phẩm phải có thể bán được" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "Hàng hóa được phân bổ đến một đơn hàng bán" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "Hàng hóa được phân bổ đến một đơn đặt bản dựng" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "Khách hàng được gán vào các mặt hàng" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "Công ty đã chọn không phải là khách hàng" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "Ghi chú phân bổ kho" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "Phải cung cấp danh sách mặt hàng" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "Ghi chú gộp kho" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "Cho phép nhiều nhà cung không khớp" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "Cho phép mặt hàng cùng sản phẩm nhà cung cấp khác phải được gộp" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "Cho phép trạng thái không khớp" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "Cho phép mặt hàng với mã trạng thái khác nhau để gộp lại" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "Cần cung cấp ít nhất hai mặt hàng" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "Giá trị khóa chính mặt hàng" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "Mã trạng thái mặt hàng" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "Ghi chú giao dịch kho" @@ -8760,7 +9035,7 @@ msgstr "Xóa toàn bộ kết quả kiểm thử cho kho hàng này" #: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" -msgstr "Thêm kết quả kiểm thử" +msgstr "" #: stock/templates/stock/item_base.html:33 msgid "Locate stock item" @@ -8846,7 +9121,7 @@ msgid "Delete stock item" msgstr "Xóa mặt hàng" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "Dựng" @@ -8912,7 +9187,7 @@ msgid "Available Quantity" msgstr "Số lượng sẵn có" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "Không có vị trí nào được đặt" @@ -8946,19 +9221,19 @@ msgstr "Chưa thực hiện kiểm kê" #: stock/templates/stock/item_base.html:507 #: templates/js/translated/stock.js:1922 msgid "stock item" -msgstr "mặt hàng" +msgstr "" #: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" -msgstr "Sửa trạng thái kho" +msgstr "" #: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" -msgstr "Mã QR mặt hàng" +msgstr "" #: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" -msgstr "Liên kết mã vạch đến mặt hàng" +msgstr "" #: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." @@ -8974,11 +9249,11 @@ msgstr "Thao tác này không thể khôi phục lại một cách dễ dàng" #: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" -msgstr "Chuyển đổi mặt hàng" +msgstr "" #: stock/templates/stock/item_base.html:662 msgid "Return to Stock" -msgstr "Trả lại kho" +msgstr "" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." @@ -9057,19 +9332,19 @@ msgstr "Vị trí mới" #: stock/templates/stock/location.html:289 #: templates/js/translated/stock.js:2543 msgid "stock location" -msgstr "vị trí kho hàng" +msgstr "" #: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" -msgstr "Quét kho chứa vào trong vị trí này" +msgstr "" #: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" -msgstr "Mã QR vị trí kho" +msgstr "" #: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" -msgstr "Liên kết mã vạch đến vị trí kho" +msgstr "" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." @@ -9143,71 +9418,71 @@ msgstr "Chỉ số" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "Sản phẩm đã đăng ký" +msgstr "" #: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "Danh mục đã đăng ký" +msgstr "" #: templates/InvenTree/index.html:62 msgid "Latest Parts" -msgstr "Nguyên liệu mới nhất" +msgstr "" #: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" -msgstr "BOM đợi phê chuẩn" +msgstr "" #: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "Mới Cập Nhật" +msgstr "" #: templates/InvenTree/index.html:134 msgid "Depleted Stock" -msgstr "Kho đã hết hàng" +msgstr "" #: templates/InvenTree/index.html:148 msgid "Required for Build Orders" -msgstr "Bắt buộc cho đơn đặt bản dựng" +msgstr "" #: templates/InvenTree/index.html:156 msgid "Expired Stock" -msgstr "Kho đã quá hạn" +msgstr "" #: templates/InvenTree/index.html:172 msgid "Stale Stock" -msgstr "Kho hàng ế" +msgstr "" #: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "Đơn đặt bản dựng trong tiến trình" +msgstr "" #: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "Đơn đặt bản dựng quá hạn" +msgstr "" #: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" -msgstr "Đơn đặt mua nổi bật" +msgstr "" #: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" -msgstr "Đơn mua quá hạn" +msgstr "" #: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" -msgstr "Đơn hàng bán nổi bật" +msgstr "" #: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" -msgstr "Đơn hàng bán quá hạn" +msgstr "" #: templates/InvenTree/index.html:299 msgid "InvenTree News" -msgstr "Tin tức InvenTree" +msgstr "" #: templates/InvenTree/index.html:301 msgid "Current News" -msgstr "Tin hiện tại" +msgstr "" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" @@ -9237,11 +9512,11 @@ msgstr "Thông báo" #: templates/InvenTree/notifications/notifications.html:38 msgid "No unread notifications found" -msgstr "Chưa có thông báo mới" +msgstr "" #: templates/InvenTree/notifications/notifications.html:58 msgid "No notification history found" -msgstr "Không tìm thấy nhật ký thông báo" +msgstr "" #: templates/InvenTree/notifications/notifications.html:65 msgid "Delete all read notifications" @@ -9250,7 +9525,7 @@ msgstr "Xóa toàn bộ thông báo đã đọc" #: templates/InvenTree/notifications/notifications.html:89 #: templates/js/translated/notification.js:85 msgid "Delete Notification" -msgstr "Xóa thông báo" +msgstr "" #: templates/InvenTree/notifications/sidebar.html:8 msgid "Inbox" @@ -9413,11 +9688,6 @@ msgstr "Tin nhắn" msgid "Plugin information" msgstr "Thông tin phần bổ sung" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "Phiên bản" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "chưa cung cấp thông tin phiên bản" @@ -9546,112 +9816,112 @@ msgstr "Sửa cài đặt" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" -msgstr "Sửa cài đặt phần bổ sung" +msgstr "" #: templates/InvenTree/settings/settings_js.html:60 msgid "Edit Notification Setting" -msgstr "Sửa cài đặt thông báo" +msgstr "" #: templates/InvenTree/settings/settings_js.html:63 msgid "Edit Global Setting" -msgstr "Chỉnh sửa cài đặt toàn cục" +msgstr "" #: templates/InvenTree/settings/settings_js.html:65 msgid "Edit User Setting" -msgstr "Chỉnh sửa cài đặt người dùng" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:49 msgid "Rate" -msgstr "Tỷ lệ" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Xóa" #: templates/InvenTree/settings/settings_staff_js.html:95 msgid "Edit Custom Unit" -msgstr "Sửa đơn vị tùy chỉnh" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:110 msgid "Delete Custom Unit" -msgstr "Xóa đơn vị tùy chỉnh" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:124 msgid "New Custom Unit" -msgstr "Đơn vị tùy chỉnh mới" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" -msgstr "Không tìm thấy mã dự án" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" -msgstr "nhóm" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:175 #: templates/InvenTree/settings/settings_staff_js.html:189 msgid "Edit Project Code" -msgstr "Sửa mã dự án" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:176 #: templates/InvenTree/settings/settings_staff_js.html:203 msgid "Delete Project Code" -msgstr "Xóa mã dự án" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:285 msgid "No category parameter templates found" -msgstr "Không tìm thấy mẫu tham số danh mục" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 #: templates/js/translated/part.js:1645 msgid "Edit Template" -msgstr "Sửa mẫu" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 #: templates/js/translated/part.js:1646 msgid "Delete Template" -msgstr "Xóa mẫu" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:326 msgid "Edit Category Parameter Template" -msgstr "Sửa mẫu tham số danh mục" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:353 msgid "Delete Category Parameter Template" -msgstr "Xóa mẫu tham số danh mục" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:388 msgid "Create Category Parameter Template" -msgstr "Tạo mẫu tham số danh mục" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:418 msgid "Create Part Parameter Template" -msgstr "Tạo mẫu tham số sản phẩm" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:440 msgid "No stock location types found" -msgstr "Không tìm thấy loại vị trí kho" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:461 msgid "Location count" -msgstr "Đếm vị trí" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:466 #: templates/InvenTree/settings/settings_staff_js.html:480 msgid "Edit Location Type" -msgstr "Sửa loại vị trí" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:467 msgid "Delete Location type" -msgstr "Xóa loại vị trí" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:490 msgid "Delete Location Type" -msgstr "Xóa loại vị trí" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 #: templates/InvenTree/settings/stock.html:35 @@ -9854,7 +10124,7 @@ msgstr "%(time)s trước" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "Bạn có thực sự muốn xóa các địa chỉ email được chọn?" +msgstr "" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" @@ -10044,7 +10314,7 @@ msgstr "Chưa có tài khoản?" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "Đăng ký" @@ -10124,7 +10394,7 @@ msgstr "Hiện đang đóng chức năng đăng ký." #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "Quay lại trang đăng nhập" @@ -10253,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "Sản phẩm sau còn ít hàng trong kho yêu cầu" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "Số lượng bắt buộc" @@ -10273,148 +10543,148 @@ msgstr "Số lượng tối thiểu" #: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" -msgstr "Không phản hồi" +msgstr "" #: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" -msgstr "Máy chủ InvenTree không phản hồi" +msgstr "" #: templates/js/translated/api.js:232 msgid "Error 400: Bad request" -msgstr "Lỗi 400: Yêu cầu không hợp lệ" +msgstr "" #: templates/js/translated/api.js:233 msgid "API request returned error code 400" -msgstr "Yêu cầu API đã trả về mã lỗi 400" +msgstr "" #: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" -msgstr "Lỗi 401: Chưa được xác thực" +msgstr "" #: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" -msgstr "Chưa cung cấp chi tiết thông tin xác thực" +msgstr "" #: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" -msgstr "Lỗi 403: Quyền bị từ chối" +msgstr "" #: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "Bạn không có đủ quyền để truy cập chức năng này" +msgstr "" #: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" -msgstr "Lỗi 404: Không tìm thấy tài nguyên" +msgstr "" #: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" -msgstr "Không tìm thấy tài nguyên được yêu cầu có trên máy chủ" +msgstr "" #: templates/js/translated/api.js:252 msgid "Error 405: Method Not Allowed" -msgstr "Lỗi 405: Phương thức không được phép" +msgstr "" #: templates/js/translated/api.js:253 msgid "HTTP method not allowed at URL" -msgstr "Không được phép dùng giao thức HTTP trên URL" +msgstr "" #: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "Lỗi 408: Hết thời gian" +msgstr "" #: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" -msgstr "Kết nối hết thời gian trong khi dữ liệu được yêu cầu từ máy chủ" +msgstr "" #: templates/js/translated/api.js:261 msgid "Error 503: Service Unavailable" -msgstr "Lỗi 503: Dịch vụ không có sẵn" +msgstr "" #: templates/js/translated/api.js:262 msgid "The server is currently unavailable" -msgstr "Máy chủ hiện đang không có sẵn" +msgstr "" #: templates/js/translated/api.js:265 msgid "Unhandled Error Code" -msgstr "Mã lỗi không thể bẫy được" +msgstr "" #: templates/js/translated/api.js:266 msgid "Error code" -msgstr "Mã lỗi" +msgstr "" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" -msgstr "Đã xóa toàn bộ tệp đính kèm đã chọn" +msgstr "" #: templates/js/translated/attachment.js:129 msgid "Delete Attachments" -msgstr "Xóa đính kèm" +msgstr "" #: templates/js/translated/attachment.js:205 msgid "Delete attachments" -msgstr "Xóa đính kèm" +msgstr "" #: templates/js/translated/attachment.js:253 msgid "Attachment actions" -msgstr "Chức năng đính kèm" +msgstr "" #: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "Không tìm thấy tệp đính kèm" +msgstr "" #: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "Sửa tệp đính kèm" +msgstr "" #: templates/js/translated/attachment.js:346 msgid "Upload Date" -msgstr "Ngày tải lên" +msgstr "" #: templates/js/translated/attachment.js:366 msgid "Edit attachment" -msgstr "Sửa đính kèm" +msgstr "" #: templates/js/translated/attachment.js:374 msgid "Delete attachment" -msgstr "Xóa đính kèm" +msgstr "" #: templates/js/translated/barcode.js:43 msgid "Scan barcode data here using barcode scanner" -msgstr "Quét dữ liệu mã vạch ở đây sử dụng máy quét mã vạch" +msgstr "" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "Nhập dữ liệu mã vạch" +msgstr "" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" -msgstr "Quét mã vạch sử dụng webcam" +msgstr "" #: templates/js/translated/barcode.js:138 msgid "Enter optional notes for stock transfer" -msgstr "Nhập ghi chú tùy chọn cho chuyển kho" +msgstr "" #: templates/js/translated/barcode.js:139 msgid "Enter notes" -msgstr "Nhập ghi chú" +msgstr "" #: templates/js/translated/barcode.js:188 msgid "Server error" -msgstr "Lỗi mãy chủ" +msgstr "" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" -msgstr "Phản hồi không xác định từ máy chủ" +msgstr "" #: templates/js/translated/barcode.js:252 #: templates/js/translated/modals.js:1120 msgid "Invalid server response" -msgstr "Phản hồi máy chủ không hợp lệ" +msgstr "" #: templates/js/translated/barcode.js:372 msgid "Scan barcode data" -msgstr "Quét dữ liệu mã vạch" +msgstr "" #: templates/js/translated/barcode.js:420 templates/navbar.html:114 msgid "Scan Barcode" @@ -10422,85 +10692,85 @@ msgstr "Quét mã vạch" #: templates/js/translated/barcode.js:458 msgid "No URL in response" -msgstr "Thiếu URL trong dữ liệu trả lời" +msgstr "" #: templates/js/translated/barcode.js:498 msgid "This will remove the link to the associated barcode" -msgstr "Điều này sẽ gỡ liên kết đến mã vạch đã được liên kết" +msgstr "" #: templates/js/translated/barcode.js:504 msgid "Unlink" -msgstr "Hủy liên kết" +msgstr "" #: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 msgid "Remove stock item" -msgstr "Xóa mặt hàng" +msgstr "" #: templates/js/translated/barcode.js:610 msgid "Scan Stock Items Into Location" -msgstr "Quét mặt hàng vào trong vị trí" +msgstr "" #: templates/js/translated/barcode.js:612 msgid "Scan stock item barcode to check in to this location" -msgstr "Quét mã vạch mặt hàng để nhập vào vị trí này" +msgstr "" #: templates/js/translated/barcode.js:615 #: templates/js/translated/barcode.js:812 msgid "Check In" -msgstr "Đăng ký vào" +msgstr "" #: templates/js/translated/barcode.js:647 msgid "No barcode provided" -msgstr "Không cung cấp mã vạch" +msgstr "" #: templates/js/translated/barcode.js:687 msgid "Stock Item already scanned" -msgstr "Đã quét mặt hàng" +msgstr "" #: templates/js/translated/barcode.js:691 msgid "Stock Item already in this location" -msgstr "Đã quét mặt hàng vào vị trí này" +msgstr "" #: templates/js/translated/barcode.js:698 msgid "Added stock item" -msgstr "Đã thêm mặt hàng" +msgstr "" #: templates/js/translated/barcode.js:707 msgid "Barcode does not match valid stock item" -msgstr "Mã vạch không khớp với mặt hàng hợp lệ" +msgstr "" #: templates/js/translated/barcode.js:726 msgid "Scan Stock Container Into Location" -msgstr "Quét bộ chứa kho vào trong vị trí" +msgstr "" #: templates/js/translated/barcode.js:728 msgid "Scan stock container barcode to check in to this location" -msgstr "Quét mã vạch bộ chứa kho để nhập vào vị trí này" +msgstr "" #: templates/js/translated/barcode.js:762 msgid "Barcode does not match valid stock location" -msgstr "Mã vạch không khớp với vị trí kho hợp lệ" +msgstr "" #: templates/js/translated/barcode.js:806 msgid "Check Into Location" -msgstr "Kiểm tra vào vị trí" +msgstr "" #: templates/js/translated/barcode.js:875 #: templates/js/translated/barcode.js:884 msgid "Barcode does not match a valid location" -msgstr "Mã vạch không khớp với vị trí hợp lệ" +msgstr "" #: templates/js/translated/bom.js:78 msgid "Create BOM Item" -msgstr "Tạo mục BOM" +msgstr "" #: templates/js/translated/bom.js:132 msgid "Display row data" -msgstr "Hiển thị dữ liệu dòng" +msgstr "" #: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "Dữ liệu dòng" +msgstr "" #: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 #: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 @@ -10512,871 +10782,871 @@ msgstr "Đóng" #: templates/js/translated/bom.js:306 msgid "Download BOM Template" -msgstr "Tải mẫu BOM xuống" +msgstr "" #: templates/js/translated/bom.js:351 msgid "Multi Level BOM" -msgstr "BOM đa cấp độ" +msgstr "" #: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" -msgstr "Bao gồm dữ liệuBOM cho phụ kiện nhỏ" +msgstr "" #: templates/js/translated/bom.js:357 msgid "Levels" -msgstr "Cấp độ" +msgstr "" #: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "Chọn số tối đa của cấp độ BOM để xuất (0 = mọi cấp)" +msgstr "" #: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" -msgstr "Bao gồm sản phẩm khác" +msgstr "" #: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" -msgstr "Bao gồm sản phẩm khác trong BOM đã xuất" +msgstr "" #: templates/js/translated/bom.js:371 msgid "Include Parameter Data" -msgstr "Bao gồm dữ liệu tham số" +msgstr "" #: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" -msgstr "Bao gồm dữ liệu tham số sản phẩm trong BOM được xuất ra" +msgstr "" #: templates/js/translated/bom.js:377 msgid "Include Stock Data" -msgstr "Bao gồm dữ liệu tồn kho" +msgstr "" #: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" -msgstr "Bao gồm dữ liệu tồn kho sản phẩm trong BOM xuất ra" +msgstr "" #: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" -msgstr "Bao gồm dữ liệu nhà sản xuất" +msgstr "" #: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" -msgstr "Bao gồm dữ liệu nhà sản xuất sản phẩm trong BOM được xuất ra" +msgstr "" #: templates/js/translated/bom.js:389 msgid "Include Supplier Data" -msgstr "Bao gồm thông tin nhà cung cấp" +msgstr "" #: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" -msgstr "Bao gồm dữ liệu sản phẩm nhà cung cấp trong BOM xuất ra" +msgstr "" #: templates/js/translated/bom.js:395 msgid "Include Pricing Data" -msgstr "Bao gồm thông tin giá" +msgstr "" #: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" -msgstr "Bao gồm dữ liệu định giá sản phẩm trong BOM xuất ra" +msgstr "" #: templates/js/translated/bom.js:591 msgid "Remove substitute part" -msgstr "Xóa sản phẩm thay thế" +msgstr "" #: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" -msgstr "Chọn và thêm một sản phẩm thay thế mới sử dụng đầu vào bên dưới" +msgstr "" #: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" -msgstr "Bạn có muốn xóa liên kết sản phẩm thay thế này?" +msgstr "" #: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" -msgstr "Xóa sản phẩm thay thế" +msgstr "" #: templates/js/translated/bom.js:701 msgid "Add Substitute" -msgstr "Thêm thay thế" +msgstr "" #: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" -msgstr "Sửa phần thay thế mục BOM" +msgstr "" #: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" -msgstr "Sẽ xóa toàn bộ mục BOM" +msgstr "" #: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" -msgstr "Xóa mục BOM đã chọn?" +msgstr "" #: templates/js/translated/bom.js:826 msgid "Delete items" -msgstr "Xóa mặt hàng" +msgstr "" #: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" -msgstr "Nạp BOM cho bộ phận lắp ghép" +msgstr "" #: templates/js/translated/bom.js:946 msgid "Substitutes Available" -msgstr "Bộ phận lắp ghép có sẵn" +msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" -msgstr "Kho biến thể được phép" +msgstr "" #: templates/js/translated/bom.js:1014 msgid "Substitutes" -msgstr "Sản phẩm thay thế" +msgstr "" #: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" -msgstr "Định giá BOM đã hoàn thành" +msgstr "" #: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" -msgstr "Định giá BOM chưa hoàn thành" +msgstr "" #: templates/js/translated/bom.js:1151 msgid "No pricing available" -msgstr "Chưa có thông tin định giá" +msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" -msgstr "Không có sẵn kho" +msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" -msgstr "Bao gồm biến thể và kho sản phẩm thay thế" +msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" -msgstr "Bao gồm kho biến thể" +msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" -msgstr "Bao gồm kho thay thế" +msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" -msgstr "Vật tư tiêu hao" +msgstr "" #: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" -msgstr "Phê chuẩn mục BOM" +msgstr "" #: templates/js/translated/bom.js:1281 msgid "This line has been validated" -msgstr "Dòng này đã được phê chuẩn" +msgstr "" #: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" -msgstr "Sửa sản phẩm thay thế" +msgstr "" #: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" -msgstr "Sửa mục BOM" +msgstr "" #: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" -msgstr "Xóa mục BOM" +msgstr "" #: templates/js/translated/bom.js:1307 msgid "View BOM" -msgstr "Xem BOM" +msgstr "" #: templates/js/translated/bom.js:1391 msgid "No BOM items found" -msgstr "Không tìm thấy mục BOM nào" +msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" -msgstr "Sản phẩm bắt buộc" +msgstr "" #: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" -msgstr "Được kế thừa từ BOM cha" +msgstr "" #: templates/js/translated/build.js:142 msgid "Edit Build Order" -msgstr "Sửa đơn đặt bản dựng" +msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" -msgstr "Tạo đơn đặt bản dựng" +msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" -msgstr "Sửa đơn đặt bản dựng" +msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" -msgstr "Bạn có chắc chắn muốn hủy bản dựng này?" +msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" -msgstr "Mặt hàng đã được phân bổ vào đơn đặt bản dựng này" +msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" -msgstr "Có đầu ra chưa hoàn thiện vẫn còn cho đơn đặt bản dựng này" +msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" -msgstr "Đơn đặt bản dựng đã sẵn sàn được hoàn thiện" - -#: templates/js/translated/build.js:299 -msgid "This build order cannot be completed as there are incomplete outputs" -msgstr "Không thể hoàn thiện đơn đặt bản dựng vì đầu ra chưa hoàn thành" +msgstr "" #: templates/js/translated/build.js:304 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "" + +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" -msgstr "Đơn đặt bản dựng chưa hoàn thành" +msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" -msgstr "Hoàn thành đơn đặt bản dựng" +msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" -msgstr "Số sêri có sẵn tiếp theo" +msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "Số seri mới nhất" +msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" -msgstr "Hóa đơn vật liệu chứa sản phẩm có thể theo dõi được" +msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" -msgstr "Dựng đầu ra phải được tạo một cách độc lập" +msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" -msgstr "Sản phẩm được theo dõi có thể có số sêri được chỉ định" +msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "Điền số sêri để tạo nhiều đầu ra bản dựng đơn lẻ" +msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" -msgstr "Tạo đầu ra bản dựng" +msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" -msgstr "Chỉ định mặt hàng cho đầu ra bản dựng này" +msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" -msgstr "Phân bổ kho từ đầu ra bản dựng" +msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" -msgstr "Hoàn thiện đầu ra bản dựng" +msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" -msgstr "Loại bỏ đầu ra bản dựng" +msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" -msgstr "Xóa đầu ra bản dựng" +msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" -msgstr "Bạn có chắc chắn muốn phân bổ mặt hàng đã chọn từ bản dựng này?" +msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" -msgstr "Phân bổ mặt hàng" +msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" -msgstr "Chọn đầu ra bản dựng" +msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" -msgstr "Ít nhất một đầu ra bản dựng phải được chọn" +msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" -msgstr "Đầu ra bản dựng được chọn sẽ được đánh dấu là hoàn thành" +msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" -msgstr "Đầu ra" +msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" -msgstr "Hoàn thành đầu ra bản dựng" +msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" -msgstr "Đầu ra bản dựng đx chọn sẽ được đánh dấu là bị loại bỏ" +msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" -msgstr "Đầu ra bị loại bỏ được đánh dấu là bị từ chối" +msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" -msgstr "Mặt hàng được chỉ định không còn hàng nữa" +msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" -msgstr "Trạng thái hoàn thành của đơn đặt bản dựng sẽ không được điều chỉnh" +msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" -msgstr "Loại bỏ đầu ra bản dựng" +msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" -msgstr "Sẽ xóa đầu ra bản dựng được chọn" +msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" -msgstr "Sẽ xóa vĩnh viễn dữ liệu đầu ra bản dựng" +msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" -msgstr "Sẽ trả về kho mặt hàng được chỉ định" +msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" -msgstr "Xóa đầu ra bản dựng" +msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" -msgstr "No build order allocations found" +msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" -msgstr "Số lượng đã phân bổ" +msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" -msgstr "Vị trí chưa được chỉ định" +msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" -msgstr "Hoàn thiện đầu ra" +msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" -msgstr "Loại bỏ đầu ra" +msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" -msgstr "Xóa đầu ra" - -#: templates/js/translated/build.js:1110 -msgid "build output" -msgstr "đầu ra bản dựng" - -#: templates/js/translated/build.js:1111 -msgid "build outputs" -msgstr "đầu ra bản dựng" +msgstr "" #: templates/js/translated/build.js:1115 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1116 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1120 msgid "Build output actions" -msgstr "Chức năng đầu ra bản dựng" +msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" -msgstr "Không tìm thấy đầu ra bản dựng hoạt động" +msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" -msgstr "Dòng đã phân bổ" +msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" -msgstr "Kiểm thử bắt buộc" +msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "Chọn sản phẩm" +msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" -msgstr "Bạn phải chọn ít nhất một sản phẩm để phân bổ" +msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" -msgstr "Xác định số lượng phân bổ kho" +msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" -msgstr "Toàn bộ sản phẩm đã phân bổ" +msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" -msgstr "Đã phân bổ tất cả sản phẩm đã chọn đầy đủ" +msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" -msgstr "Chọn vị trí nguồn (để trống để lấy từ tất cả vị trí)" +msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" -msgstr "Phân bổ mặt hàng đến đơn đặt bản dựng" +msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" -msgstr "Không có vị trí kho trùng khớp" +msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" -msgstr "Mặt hàng không phù hợp" +msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" -msgstr "Phân kho tự động" +msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "Mặt hàng sẽ được tự động phân bổ đến đơn đặt bản dựng này, theo chỉ dẫn đã được cung cấp" +msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" -msgstr "Nếu một vị trí đã được chỉ định, kho sẽ chỉ phân bổ được từ vị trí đó" +msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" -msgstr "Nếu kho được xem xét nhắc có thể thay đổi, nó sẽ tự động được phân bổ từ vị trí đầu tiên nó tìm thấy" +msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" -msgstr "Nếu kho thay thế được phép, nó sẽ được dùng nơi kho của sản phẩm chính không thể tìm thấy được" +msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" -msgstr "Phân kho" +msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" -msgstr "Không có bản dựng nào phù hợp truy vấn" +msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" -msgstr "Chọn" +msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" -msgstr "Đơn đặt bản dựng quá hạn" +msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" -msgstr "Tiến trình" +msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" -msgstr "Không có thông tin người dùng" +msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" -msgstr "Sửa phân bổ kho" +msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" -msgstr "Xóa phân bổ kho" +msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" -msgstr "Sửa phân bổ" +msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" -msgstr "Xóa phân bổ" +msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" -msgstr "lộ giới" +msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" -msgstr "lộ giới" +msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" -msgstr "Không tìm thấy lộ giới" +msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" -msgstr "Sản phẩm theo dõi được" +msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" -msgstr "Số lượng đơn vị" +msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" -msgstr "Kho đủ hạn mức khả dụng" +msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" -msgstr "Vật tư tiêu hao" +msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" -msgstr "Mặt hàng đã theo dõi" - -#: templates/js/translated/build.js:2640 -#: templates/js/translated/sales_order.js:2016 -msgid "Build stock" -msgstr "Xây kho" - -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 -msgid "Order stock" -msgstr "Kho đặt hàng" - -#: templates/js/translated/build.js:2649 -#: templates/js/translated/sales_order.js:2010 -msgid "Allocate stock" -msgstr "Phân kho" +msgstr "" #: templates/js/translated/build.js:2653 +#: templates/js/translated/sales_order.js:2016 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2662 +#: templates/js/translated/sales_order.js:2010 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" -msgstr "Xóa phân bổ kho" +msgstr "" #: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "Thêm nhà sản xuất" +msgstr "" #: templates/js/translated/company.js:111 #: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "Sản phẩm nhà sản xuất" +msgstr "" #: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "Sửa sản phẩm nhà sản xuất" +msgstr "" #: templates/js/translated/company.js:201 #: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "Thêm nhà cung cấp" +msgstr "" #: templates/js/translated/company.js:243 #: templates/js/translated/purchase_order.js:352 msgid "Add Supplier Part" -msgstr "Thêm sản phẩm nhà cung cấp" +msgstr "" #: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" -msgstr "Sẽ xóa toàn bộ sản phẩm nhà cung cấp đã chọn" +msgstr "" #: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" -msgstr "Xóa sản phẩm nhà cung cấp" +msgstr "" #: templates/js/translated/company.js:465 msgid "Add new Company" -msgstr "Thêm công ty mới" +msgstr "" #: templates/js/translated/company.js:536 msgid "Parts Supplied" -msgstr "Sản phẩm đã cung cấp" +msgstr "" #: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "Sản phẩm đã sản xuất" +msgstr "" #: templates/js/translated/company.js:560 msgid "No company information found" -msgstr "Không tìm thấy thông tin công ty" +msgstr "" #: templates/js/translated/company.js:609 msgid "Create New Contact" -msgstr "Tạo liên lạc mới" +msgstr "" #: templates/js/translated/company.js:625 #: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "Chỉnh sửa liên hệ" +msgstr "" #: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" -msgstr "Tất cả liên hệ được chọn sẽ bị xóa" +msgstr "" #: templates/js/translated/company.js:668 #: templates/js/translated/company.js:732 msgid "Role" -msgstr "Vai trò" +msgstr "" #: templates/js/translated/company.js:676 msgid "Delete Contacts" -msgstr "Xoá liên hệ" +msgstr "" #: templates/js/translated/company.js:707 msgid "No contacts found" -msgstr "Không tìm thấy liên hệ" +msgstr "" #: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "Số điện thoại" +msgstr "" #: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "Địa chỉ email" +msgstr "" #: templates/js/translated/company.js:752 msgid "Delete Contact" -msgstr "Xoá liên hệ" +msgstr "" #: templates/js/translated/company.js:849 msgid "Create New Address" -msgstr "Tạo địa chỉ mới" +msgstr "" #: templates/js/translated/company.js:864 #: templates/js/translated/company.js:1025 msgid "Edit Address" -msgstr "Sửa địa chỉ" +msgstr "" #: templates/js/translated/company.js:899 msgid "All selected addresses will be deleted" -msgstr "Tất cả địa chỉ đã được chọn sẽ bị xoá" +msgstr "" #: templates/js/translated/company.js:913 msgid "Delete Addresses" -msgstr "Xoá địa chỉ" +msgstr "" #: templates/js/translated/company.js:940 msgid "No addresses found" -msgstr "Không tìm thấy địa chỉ" +msgstr "" #: templates/js/translated/company.js:979 msgid "Postal city" -msgstr "Thành phố bưu chính" +msgstr "" #: templates/js/translated/company.js:985 msgid "State/province" -msgstr "Bang/Tỉnh" +msgstr "" #: templates/js/translated/company.js:997 msgid "Courier notes" -msgstr "Ghi chú chuyển phát nhanh" +msgstr "" #: templates/js/translated/company.js:1003 msgid "Internal notes" -msgstr "Lưu ý nội bộ" +msgstr "" #: templates/js/translated/company.js:1029 msgid "Delete Address" -msgstr "Xóa địa chỉ" +msgstr "" #: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" -msgstr "Sẽ xóa toàn bộ sản phẩm nhà sản xuất đã chọn" +msgstr "" #: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" -msgstr "Xóa sản phẩm của nhà sản xuất" +msgstr "" #: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" -msgstr "Tất cả những thống số được chọn sẽ bị xoá" +msgstr "" #: templates/js/translated/company.js:1165 msgid "Delete Parameters" -msgstr "Xóa các thông số" +msgstr "" #: templates/js/translated/company.js:1181 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 msgid "Order parts" -msgstr "Đặt hàng sản phẩm" +msgstr "" #: templates/js/translated/company.js:1198 msgid "Delete manufacturer parts" -msgstr "Xóa sản phẩm của nhà sản xuất" +msgstr "" #: templates/js/translated/company.js:1230 msgid "Manufacturer part actions" -msgstr "Chức năng sản phẩm của nhà sản xuất" +msgstr "" #: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" -msgstr "Không tìm thấy nhà sản xuất" +msgstr "" #: templates/js/translated/company.js:1269 #: templates/js/translated/company.js:1557 templates/js/translated/part.js:798 #: templates/js/translated/part.js:1210 msgid "Template part" -msgstr "Sản phẩm mẫu" +msgstr "" #: templates/js/translated/company.js:1273 #: templates/js/translated/company.js:1561 templates/js/translated/part.js:802 #: templates/js/translated/part.js:1214 msgid "Assembled part" -msgstr "Sản phẩm đã lắp ráp" +msgstr "" #: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464 msgid "No parameters found" -msgstr "Không có thông số được tìm thấy" +msgstr "" #: templates/js/translated/company.js:1428 templates/js/translated/part.js:1527 msgid "Edit parameter" -msgstr "Sửa tham số" +msgstr "" #: templates/js/translated/company.js:1429 templates/js/translated/part.js:1528 msgid "Delete parameter" -msgstr "Xóa tham số" +msgstr "" #: templates/js/translated/company.js:1446 templates/js/translated/part.js:1433 msgid "Edit Parameter" -msgstr "Sửa tham số" +msgstr "" #: templates/js/translated/company.js:1455 templates/js/translated/part.js:1549 msgid "Delete Parameter" -msgstr "Xóa tham số" +msgstr "" #: templates/js/translated/company.js:1486 msgid "Delete supplier parts" -msgstr "Xóa sản phẩm nhà cung cấp" +msgstr "" #: templates/js/translated/company.js:1536 msgid "No supplier parts found" -msgstr "Không tìm thấy sản phẩm nhà cung cấp" +msgstr "" #: templates/js/translated/company.js:1654 msgid "Base Units" -msgstr "Đơn vị cơ sở" +msgstr "" #: templates/js/translated/company.js:1684 msgid "Availability" -msgstr "Sẵn sàng" +msgstr "" #: templates/js/translated/company.js:1715 msgid "Edit supplier part" -msgstr "Sửa sản phẩm nhà cung cấp" +msgstr "" #: templates/js/translated/company.js:1716 msgid "Delete supplier part" -msgstr "Xóa sản phẩm nhà cung cấp" +msgstr "" #: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" -msgstr "Xóa phá giá" +msgstr "" #: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" -msgstr "Sửa phá giá" +msgstr "" #: templates/js/translated/company.js:1794 msgid "No price break information found" -msgstr "Không tìm thấy thông tin phá giá" +msgstr "" #: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "Lần cập nhật trước" +msgstr "" #: templates/js/translated/company.js:1830 msgid "Edit price break" -msgstr "Sửa phá giá" +msgstr "" #: templates/js/translated/company.js:1831 msgid "Delete price break" -msgstr "Xóa phá giá" +msgstr "" #: templates/js/translated/filters.js:186 #: templates/js/translated/filters.js:672 msgid "true" -msgstr "đúng" +msgstr "" #: templates/js/translated/filters.js:190 #: templates/js/translated/filters.js:673 msgid "false" -msgstr "sai" +msgstr "" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "Chọn bộ lọc" +msgstr "" #: templates/js/translated/filters.js:437 msgid "Print Labels" -msgstr "In nhãn" +msgstr "" #: templates/js/translated/filters.js:441 msgid "Print Reports" -msgstr "In báo cáo" +msgstr "" #: templates/js/translated/filters.js:453 msgid "Download table data" -msgstr "Tải về dữ liệu bảng" +msgstr "" #: templates/js/translated/filters.js:460 msgid "Reload table data" -msgstr "Nạp lại dữ liệu bảng" +msgstr "" #: templates/js/translated/filters.js:469 msgid "Add new filter" -msgstr "Thêm bộ lọc mới" +msgstr "" #: templates/js/translated/filters.js:477 msgid "Clear all filters" -msgstr "Xóa tất cả bộ lọc" +msgstr "" #: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "Tạo bộ lọc" +msgstr "" #: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 #: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" -msgstr "Chức năng bị cấm" +msgstr "" #: templates/js/translated/forms.js:376 msgid "Create operation not allowed" -msgstr "Hoạt động tạo là không được phép" +msgstr "" #: templates/js/translated/forms.js:391 msgid "Update operation not allowed" -msgstr "Hoạt động cập nhật là không được phép" +msgstr "" #: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" -msgstr "Hoạt động xóa là không được phép" +msgstr "" #: templates/js/translated/forms.js:419 msgid "View operation not allowed" -msgstr "Hoạt động xem là không được phép" +msgstr "" #: templates/js/translated/forms.js:796 msgid "Keep this form open" -msgstr "Giữ biểu mẫu này mở" +msgstr "" #: templates/js/translated/forms.js:899 msgid "Enter a valid number" -msgstr "Nhập vào số hợp lệ" +msgstr "" #: templates/js/translated/forms.js:1469 templates/modals.html:19 #: templates/modals.html:43 @@ -11385,104 +11655,100 @@ msgstr "Lỗi biểu mẫu tồn tại" #: templates/js/translated/forms.js:1967 msgid "No results found" -msgstr "Không tìm thấy kết quả" +msgstr "" #: templates/js/translated/forms.js:2271 templates/js/translated/search.js:239 msgid "Searching" -msgstr "Đang tìm kiếm" +msgstr "" #: templates/js/translated/forms.js:2485 msgid "Clear input" -msgstr "Dọn dẹp đầu vào" +msgstr "" #: templates/js/translated/forms.js:3071 msgid "File Column" -msgstr "Cột tệp tin" +msgstr "" #: templates/js/translated/forms.js:3071 msgid "Field Name" -msgstr "Tên trường" +msgstr "" #: templates/js/translated/forms.js:3083 msgid "Select Columns" -msgstr "Chọn cột" +msgstr "" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "CÓ" +msgstr "" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "KHÔNG" +msgstr "" #: templates/js/translated/helpers.js:93 msgid "True" -msgstr "Đúng" +msgstr "" #: templates/js/translated/helpers.js:94 msgid "False" -msgstr "Sai" +msgstr "" #: templates/js/translated/index.js:104 msgid "No parts required for builds" -msgstr "Không bắt buộc sản phẩm cho bản dựng" - -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "Kho hàng đã phân bổ" +msgstr "" #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" -msgstr "Chọn hàng hóa" +msgstr "" #: templates/js/translated/label.js:54 msgid "No items selected for printing" -msgstr "Chưa chọn hàng hóa để in" +msgstr "" #: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "Nhãn không tồn tại" +msgstr "" #: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" -msgstr "Không tìm thấy mẫu nhãn phù hợp với hàng hóa đã chọn" +msgstr "" #: templates/js/translated/label.js:97 msgid "selected" -msgstr "đã chọn" +msgstr "" #: templates/js/translated/label.js:133 msgid "Printing Options" -msgstr "Tùy chọn in ấn" +msgstr "" #: templates/js/translated/label.js:148 msgid "Print label" -msgstr "In nhãn" +msgstr "" #: templates/js/translated/label.js:148 msgid "Print labels" -msgstr "In nhãn" +msgstr "" #: templates/js/translated/label.js:149 msgid "Print" -msgstr "In" +msgstr "" #: templates/js/translated/label.js:155 msgid "Select label template" -msgstr "Chọn mẫu nhãn" +msgstr "" #: templates/js/translated/label.js:168 msgid "Select plugin" -msgstr "Chọn phần bổ sung" +msgstr "" #: templates/js/translated/label.js:187 msgid "Labels sent to printer" -msgstr "Nhãn đã gửi đến máy in" +msgstr "" #: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 #: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "Hủy" +msgstr "" #: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 #: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 @@ -11492,81 +11758,81 @@ msgstr "Gửi" #: templates/js/translated/modals.js:156 msgid "Form Title" -msgstr "Tiêu đề biểu mẫu" +msgstr "" #: templates/js/translated/modals.js:445 msgid "Waiting for server..." -msgstr "Đang đợi máy chủ..." +msgstr "" #: templates/js/translated/modals.js:596 msgid "Show Error Information" -msgstr "Hiện thông tin lỗi" +msgstr "" #: templates/js/translated/modals.js:682 msgid "Accept" -msgstr "Chấp nhận" +msgstr "" #: templates/js/translated/modals.js:740 msgid "Loading Data" -msgstr "Đang tải dữ liệu" +msgstr "" #: templates/js/translated/modals.js:1011 msgid "Invalid response from server" -msgstr "Phản hồi không hợp lệ từ máy chủ" +msgstr "" #: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" -msgstr "Dữ liệu biểu mẫu thất lạc từ phản hồi máy chủ" +msgstr "" #: templates/js/translated/modals.js:1023 msgid "Error posting form data" -msgstr "Lỗi đăng tải dữ liệu biểu mẫu" +msgstr "" #: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" -msgstr "Dữ liệu biểu mẫu trả về sai từ phản hồi JSON" +msgstr "" #: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" -msgstr "Lỗi 400: Yêu cầu không hợp lệ" +msgstr "" #: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" -msgstr "Máy chủ trả về mã lỗi 400" +msgstr "" #: templates/js/translated/modals.js:1159 msgid "Error requesting form data" -msgstr "Dữ liệu yêu cầu biểu mẫu lỗi" +msgstr "" #: templates/js/translated/news.js:33 msgid "No news found" -msgstr "Không tìm thấy tin tức" +msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 #: templates/js/translated/part.js:1604 msgid "ID" -msgstr "ID" +msgstr "" #: templates/js/translated/notification.js:52 msgid "Age" -msgstr "Tuổi" +msgstr "" #: templates/js/translated/notification.js:65 msgid "Notification" -msgstr "Thông báo" +msgstr "" #: templates/js/translated/notification.js:224 msgid "Mark as unread" -msgstr "Đánh dấu chưa đọc" +msgstr "" #: templates/js/translated/notification.js:228 msgid "Mark as read" -msgstr "Đánh dấu đã đọc" +msgstr "" #: templates/js/translated/notification.js:254 msgid "No unread notifications" -msgstr "Không có thông báo chưa đọc" +msgstr "" #: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" @@ -11574,963 +11840,967 @@ msgstr "Sẽ tải thông báo ở đây" #: templates/js/translated/order.js:89 msgid "Add Extra Line Item" -msgstr "Thêm dòng mở rộng" +msgstr "" #: templates/js/translated/order.js:126 msgid "Export Order" -msgstr "Xuất đơn đặt" +msgstr "" #: templates/js/translated/order.js:241 msgid "Duplicate Line" -msgstr "Dùng trùng lặp" +msgstr "" #: templates/js/translated/order.js:255 msgid "Edit Line" -msgstr "Sửa dòng" +msgstr "" #: templates/js/translated/order.js:268 msgid "Delete Line" -msgstr "Xoá dòng" +msgstr "" #: templates/js/translated/order.js:281 #: templates/js/translated/purchase_order.js:1987 msgid "No line items found" -msgstr "Không tìm thấy mục dòng nào" +msgstr "" #: templates/js/translated/order.js:369 msgid "Duplicate line" -msgstr "Dòng trùng lặp" +msgstr "" #: templates/js/translated/order.js:370 msgid "Edit line" -msgstr "Sửa dòng" +msgstr "" #: templates/js/translated/order.js:374 msgid "Delete line" -msgstr "Xóa dòng" +msgstr "" #: templates/js/translated/part.js:90 msgid "Part Attributes" -msgstr "Thuộc tính sản phẩm" +msgstr "" #: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "Tùy chọn tạo sản phẩm" +msgstr "" #: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "Tùy chọn nhân bản sản phẩm" +msgstr "" #: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "Thêm danh mục sản phẩm" +msgstr "" #: templates/js/translated/part.js:308 msgid "Parent part category" -msgstr "Danh mục cha" +msgstr "" #: templates/js/translated/part.js:332 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" -msgstr "Biểu tượng (tùy chọn) - Xuất toàn bộ biểu tượng sẵn có trên" +msgstr "" #: templates/js/translated/part.js:352 msgid "Create Part Category" -msgstr "Tạo nhóm sản phẩm" +msgstr "" #: templates/js/translated/part.js:355 msgid "Create new category after this one" -msgstr "Tạo danh mục mới sau cái này" +msgstr "" #: templates/js/translated/part.js:356 msgid "Part category created" -msgstr "Danh mục sản phẩm đã được tạo" +msgstr "" #: templates/js/translated/part.js:370 msgid "Edit Part Category" -msgstr "Sửa danh mục sản phẩm" +msgstr "" #: templates/js/translated/part.js:383 msgid "Are you sure you want to delete this part category?" -msgstr "Bạn có thực sự muốn xóa danh mục sản phẩm không?" +msgstr "" #: templates/js/translated/part.js:388 msgid "Move to parent category" -msgstr "Chuyển tới danh mục cha" +msgstr "" #: templates/js/translated/part.js:397 msgid "Delete Part Category" -msgstr "Xóa danh mục sản phẩm" +msgstr "" #: templates/js/translated/part.js:401 msgid "Action for parts in this category" -msgstr "Chức năng cho sản phẩm trong danh mục này" +msgstr "" #: templates/js/translated/part.js:406 msgid "Action for child categories" -msgstr "Chức năng cho danh mục con" +msgstr "" #: templates/js/translated/part.js:430 msgid "Create Part" -msgstr "Tạo sản phẩm" +msgstr "" #: templates/js/translated/part.js:432 msgid "Create another part after this one" -msgstr "Tạo sản phẩm khác sau cái này" +msgstr "" #: templates/js/translated/part.js:433 msgid "Part created successfully" -msgstr "Sản phẩm đã được tạo thành công" +msgstr "" #: templates/js/translated/part.js:461 msgid "Edit Part" -msgstr "Sửa sản phẩm" +msgstr "" #: templates/js/translated/part.js:463 msgid "Part edited" -msgstr "Sản phẩm đã được sửa" +msgstr "" #: templates/js/translated/part.js:474 msgid "Create Part Variant" -msgstr "Tạo biến thể sản phẩm" +msgstr "" #: templates/js/translated/part.js:531 msgid "Active Part" -msgstr "Sản phẩm kích hoạt" +msgstr "" #: templates/js/translated/part.js:532 msgid "Part cannot be deleted as it is currently active" -msgstr "Không thể xóa sản phẩm vì nó đang hoạt động" +msgstr "" #: templates/js/translated/part.js:546 msgid "Deleting this part cannot be reversed" -msgstr "Không thể khôi phục việc xóa sản phẩm này" +msgstr "" #: templates/js/translated/part.js:548 msgid "Any stock items for this part will be deleted" -msgstr "Sẽ xóa bất kỳ mặt hàng nào của sản phẩm này" +msgstr "" #: templates/js/translated/part.js:549 msgid "This part will be removed from any Bills of Material" -msgstr "Sẽ xóa sản phẩm này khỏi hóa đơn vật liệu" +msgstr "" #: templates/js/translated/part.js:550 msgid "All manufacturer and supplier information for this part will be deleted" -msgstr "Sẽ xóa toàn bộ thông tin nhà sản xuất và nhà cung cấp cho sản phẩm này" +msgstr "" #: templates/js/translated/part.js:557 msgid "Delete Part" -msgstr "Xóa sản phẩm" +msgstr "" #: templates/js/translated/part.js:593 msgid "You are subscribed to notifications for this item" -msgstr "Bạn đã đăng ký nhận thông báo cho hàng hóa này" +msgstr "" #: templates/js/translated/part.js:595 msgid "You have subscribed to notifications for this item" -msgstr "Bạn đã đăng ký nhận thông báo cho hàng hóa này" +msgstr "" #: templates/js/translated/part.js:600 msgid "Subscribe to notifications for this item" -msgstr "Đăng ký nhận thông báo cho hàng hóa này" +msgstr "" #: templates/js/translated/part.js:602 msgid "You have unsubscribed to notifications for this item" -msgstr "Bạn đã hủy đăng ký nhận thông báo cho hàng hóa này" +msgstr "" #: templates/js/translated/part.js:619 msgid "Validating the BOM will mark each line item as valid" -msgstr "Phê chuẩn BOM sẽ đánh dấu từng hạng mục là hợp lệ" +msgstr "" #: templates/js/translated/part.js:629 msgid "Validate Bill of Materials" -msgstr "Phê chuẩn hóa đơn vật liệu" +msgstr "" #: templates/js/translated/part.js:632 msgid "Validated Bill of Materials" -msgstr "Hóa đơn vật liệu đã phê chuẩn" +msgstr "" #: templates/js/translated/part.js:657 msgid "Copy Bill of Materials" -msgstr "Sao chép hóa đơn vật liệu" +msgstr "" #: templates/js/translated/part.js:685 #: templates/js/translated/table_filters.js:743 msgid "Low stock" -msgstr "Còn ít hàng" +msgstr "" #: templates/js/translated/part.js:688 msgid "No stock available" -msgstr "Không có sẵn kho" +msgstr "" #: templates/js/translated/part.js:748 msgid "Demand" -msgstr "Nhu cầu" +msgstr "" #: templates/js/translated/part.js:771 msgid "Unit" -msgstr "Đơn vị" +msgstr "" #: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 msgid "Virtual part" -msgstr "Sản phẩm ảo" +msgstr "" #: templates/js/translated/part.js:806 msgid "Subscribed part" -msgstr "Sản phẩm đã đăng ký" +msgstr "" #: templates/js/translated/part.js:810 msgid "Salable part" -msgstr "Sản phẩm dùng để bán" +msgstr "" #: templates/js/translated/part.js:889 msgid "Schedule generation of a new stocktake report." -msgstr "Lập lịch tạo báo cáo kiểm kê mới." +msgstr "" #: templates/js/translated/part.js:889 msgid "Once complete, the stocktake report will be available for download." -msgstr "Một khi đã hoàn thiện, báo cáo kiểm kê sẽ có thể tải về." +msgstr "" #: templates/js/translated/part.js:897 msgid "Generate Stocktake Report" -msgstr "Tạo báo cáo kiểm kê" +msgstr "" #: templates/js/translated/part.js:901 msgid "Stocktake report scheduled" -msgstr "Báo cáo kiểm kê đã lên lịch" +msgstr "" #: templates/js/translated/part.js:1050 msgid "No stocktake information available" -msgstr "Không có sẵn thông tin kiểm kê" +msgstr "" #: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 msgid "Edit Stocktake Entry" -msgstr "Sửa mục kiểm kê" +msgstr "" #: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 msgid "Delete Stocktake Entry" -msgstr "Xóa mục kiểm kê" +msgstr "" #: templates/js/translated/part.js:1281 msgid "No variants found" -msgstr "Không tìm thấy biến thể" +msgstr "" #: templates/js/translated/part.js:1599 msgid "No part parameter templates found" -msgstr "Không tìm thấy mẫu tham số sản phẩm" +msgstr "" #: templates/js/translated/part.js:1662 msgid "Edit Part Parameter Template" -msgstr "Sửa mẫu tham số sản phẩm" +msgstr "" #: templates/js/translated/part.js:1674 msgid "Any parameters which reference this template will also be deleted" -msgstr "Những thông số thuộc mẫu này cũng sẽ bị xóa" +msgstr "" #: templates/js/translated/part.js:1682 msgid "Delete Part Parameter Template" -msgstr "Xóa mẫu tham số sản phẩm" +msgstr "" #: templates/js/translated/part.js:1716 #: templates/js/translated/purchase_order.js:1651 msgid "No purchase orders found" -msgstr "Không tìm thấy đơn đặt mua" +msgstr "" #: templates/js/translated/part.js:1860 #: templates/js/translated/purchase_order.js:2150 #: templates/js/translated/return_order.js:756 #: templates/js/translated/sales_order.js:1875 msgid "This line item is overdue" -msgstr "Hạng mục này quá hạn" +msgstr "" #: templates/js/translated/part.js:1906 #: templates/js/translated/purchase_order.js:2217 msgid "Receive line item" -msgstr "Nhận hạng mục" +msgstr "" #: templates/js/translated/part.js:1969 msgid "Delete part relationship" -msgstr "Xóa mối quan hệ sản phẩm" +msgstr "" #: templates/js/translated/part.js:1991 msgid "Delete Part Relationship" -msgstr "Xóa mối quan hệ sản phẩm" +msgstr "" #: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 msgid "No parts found" -msgstr "Không tìm thấy sản phẩm" +msgstr "" #: templates/js/translated/part.js:2200 msgid "Set the part category for the selected parts" -msgstr "Phân nhóm sản phẩm cho sản phẩm đã chọn" +msgstr "" #: templates/js/translated/part.js:2205 msgid "Set Part Category" -msgstr "Đặt nhóm sản phẩm" +msgstr "" #: templates/js/translated/part.js:2235 msgid "Set category" -msgstr "Phân nhóm" +msgstr "" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" #: templates/js/translated/part.js:2288 msgid "parts" -msgstr "sản phẩm" +msgstr "" #: templates/js/translated/part.js:2384 msgid "No category" -msgstr "Không có danh mục" +msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2640 msgid "Display as list" -msgstr "Hiển thị dạng danh sách" +msgstr "" #: templates/js/translated/part.js:2547 msgid "Display as grid" -msgstr "Hiển thị dạng lưới" +msgstr "" #: templates/js/translated/part.js:2645 msgid "No subcategories found" -msgstr "Không có phụ mục" +msgstr "" #: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "Hiển thị dạng cây" +msgstr "" #: templates/js/translated/part.js:2761 msgid "Load Subcategories" -msgstr "Tải danh mục con" +msgstr "" #: templates/js/translated/part.js:2777 msgid "Subscribed category" -msgstr "Danh mục đã đăng ký" +msgstr "" #: templates/js/translated/part.js:2854 msgid "No test templates matching query" -msgstr "Không có mẫu kiểm thử phù hợp với truy vấn" +msgstr "" #: templates/js/translated/part.js:2905 templates/js/translated/stock.js:1436 msgid "Edit test result" -msgstr "Sửa kết quả kiểm thử" +msgstr "" #: templates/js/translated/part.js:2906 templates/js/translated/stock.js:1437 #: templates/js/translated/stock.js:1699 msgid "Delete test result" -msgstr "Xóa kết quả kiểm thử" +msgstr "" #: templates/js/translated/part.js:2910 msgid "This test is defined for a parent part" -msgstr "Kiểm thử này đã được định nghĩa cho sản phẩm cha" +msgstr "" #: templates/js/translated/part.js:2926 msgid "Edit Test Result Template" -msgstr "Sửa mấ kết quả kiếm thử" +msgstr "" #: templates/js/translated/part.js:2940 msgid "Delete Test Result Template" -msgstr "Xóa mẫu kết quả kiểm thử" +msgstr "" #: templates/js/translated/part.js:3019 templates/js/translated/part.js:3020 msgid "No date specified" -msgstr "Chưa xác định ngày" +msgstr "" #: templates/js/translated/part.js:3022 msgid "Specified date is in the past" -msgstr "Ngày đã xác định đã trôi qua" +msgstr "" #: templates/js/translated/part.js:3028 msgid "Speculative" -msgstr "Đầu cơ" +msgstr "" #: templates/js/translated/part.js:3078 msgid "No scheduling information available for this part" -msgstr "Không có sẵn thông tin lập lịch cho sản phẩm này" +msgstr "" #: templates/js/translated/part.js:3084 msgid "Error fetching scheduling information for this part" -msgstr "Lỗi gọi thông tin lập lịch cho sản phẩm này" +msgstr "" #: templates/js/translated/part.js:3180 msgid "Scheduled Stock Quantities" -msgstr "Số lượng kho đã lập lịch" +msgstr "" #: templates/js/translated/part.js:3196 msgid "Maximum Quantity" -msgstr "Số lượng tối đa" +msgstr "" #: templates/js/translated/part.js:3241 msgid "Minimum Stock Level" -msgstr "Cấp kho tối thiểu" +msgstr "" #: templates/js/translated/plugin.js:46 msgid "No plugins found" -msgstr "Không tìm thấy phần bổ sung nào" +msgstr "" #: templates/js/translated/plugin.js:58 msgid "This plugin is no longer installed" -msgstr "Phần bổ sung không còn được cài đặt" +msgstr "" #: templates/js/translated/plugin.js:60 msgid "This plugin is active" -msgstr "Phần bổ sung đã hoạt động" +msgstr "" #: templates/js/translated/plugin.js:62 msgid "This plugin is installed but not active" -msgstr "Phần bổ sung này đã được cài đặt nhưng không hoạt động" +msgstr "" #: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:186 msgid "Disable Plugin" -msgstr "Tắt phần bổ sung" +msgstr "" #: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:186 msgid "Enable Plugin" -msgstr "Bật phần bổ sung" +msgstr "" #: templates/js/translated/plugin.js:158 msgid "The Plugin was installed" -msgstr "Phần bổ sung đã được cài đặt" +msgstr "" #: templates/js/translated/plugin.js:177 msgid "Are you sure you want to enable this plugin?" -msgstr "Bạn có muốn bật phần bổ sung này?" +msgstr "" #: templates/js/translated/plugin.js:181 msgid "Are you sure you want to disable this plugin?" -msgstr "Bạn có muốn phần bổ sung này?" +msgstr "" #: templates/js/translated/plugin.js:189 msgid "Enable" -msgstr "Bật" +msgstr "" #: templates/js/translated/plugin.js:189 msgid "Disable" -msgstr "Tắt" +msgstr "" #: templates/js/translated/plugin.js:203 msgid "Plugin updated" -msgstr "Đã cập nhật phần bổ sung" +msgstr "" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" -msgstr "Lỗi khi tải thông tin tiền tệ" +msgstr "" #: templates/js/translated/pricing.js:321 msgid "No BOM data available" -msgstr "Không có sẵn thông tin BOM" +msgstr "" #: templates/js/translated/pricing.js:463 msgid "No supplier pricing data available" -msgstr "Không có sẵn thông tin định giá nhà cung cấp" +msgstr "" #: templates/js/translated/pricing.js:572 msgid "No price break data available" -msgstr "Không có sẵn dữ liệu phá giá" +msgstr "" #: templates/js/translated/pricing.js:755 msgid "No purchase history data available" -msgstr "Không có sẵn dữ liệu lịch sử mua hàng" +msgstr "" #: templates/js/translated/pricing.js:791 msgid "Purchase Price History" -msgstr "Lịch sử giá mua hàng" +msgstr "" #: templates/js/translated/pricing.js:894 msgid "No sales history data available" -msgstr "Không có sẵn lịch sử bán hàng" +msgstr "" #: templates/js/translated/pricing.js:916 msgid "Sale Price History" -msgstr "Lịch sử giá bán" +msgstr "" #: templates/js/translated/pricing.js:1005 msgid "No variant data available" -msgstr "Không có sẵn dữ liệu biến thể" +msgstr "" #: templates/js/translated/pricing.js:1045 msgid "Variant Part" -msgstr "Sản phẩm biến thể" +msgstr "" #: templates/js/translated/purchase_order.js:169 msgid "Select purchase order to duplicate" -msgstr "Chọn đơn đặt mua để nhân bản" +msgstr "" #: templates/js/translated/purchase_order.js:176 msgid "Duplicate Line Items" -msgstr "Nhân bản hạng mục" +msgstr "" #: templates/js/translated/purchase_order.js:177 msgid "Duplicate all line items from the selected order" -msgstr "Nhân bản toàn bộ hạng mục từ đơn đặt đã chọn" +msgstr "" #: templates/js/translated/purchase_order.js:184 msgid "Duplicate Extra Lines" -msgstr "Nhân bản dòng mở rộng" +msgstr "" #: templates/js/translated/purchase_order.js:185 msgid "Duplicate extra line items from the selected order" -msgstr "Nhân bản hạng mục mở rộng từ đơn đặt đã chọn" +msgstr "" #: templates/js/translated/purchase_order.js:206 msgid "Edit Purchase Order" -msgstr "Chỉnh sửa đơn đặt mua" +msgstr "" #: templates/js/translated/purchase_order.js:223 msgid "Duplication Options" -msgstr "Tùy chọn nhân bản" +msgstr "" #: templates/js/translated/purchase_order.js:450 msgid "Complete Purchase Order" -msgstr "Hoàn thành đơn đặt mua" +msgstr "" #: templates/js/translated/purchase_order.js:467 #: templates/js/translated/return_order.js:210 #: templates/js/translated/sales_order.js:500 msgid "Mark this order as complete?" -msgstr "Đánh dấu đơn đặt đã hoàn thành?" +msgstr "" #: templates/js/translated/purchase_order.js:473 msgid "All line items have been received" -msgstr "Tất cả mục dòng đã nhận được" +msgstr "" #: templates/js/translated/purchase_order.js:478 msgid "This order has line items which have not been marked as received." -msgstr "Đơn đặt này có mục dòng chưa được đánh dấu là đã nhận được." +msgstr "" #: templates/js/translated/purchase_order.js:479 #: templates/js/translated/sales_order.js:514 msgid "Completing this order means that the order and line items will no longer be editable." -msgstr "Hoàn thành đơn đặt này nghĩa là đơn đặt và mục dòng sẽ không thể sửa được nữa." +msgstr "" #: templates/js/translated/purchase_order.js:502 msgid "Cancel Purchase Order" -msgstr "Hủy đơn đặt mua" +msgstr "" #: templates/js/translated/purchase_order.js:507 msgid "Are you sure you wish to cancel this purchase order?" -msgstr "Bạn có muốn hủy đơn đặt mua này?" +msgstr "" #: templates/js/translated/purchase_order.js:513 msgid "This purchase order can not be cancelled" -msgstr "Không thể hủy đơn đặt mua này" +msgstr "" #: templates/js/translated/purchase_order.js:534 #: templates/js/translated/return_order.js:164 msgid "After placing this order, line items will no longer be editable." -msgstr "Sau khi đặt đơn này, sẽ không thể sửa mục dòng được nữa." +msgstr "" #: templates/js/translated/purchase_order.js:539 msgid "Issue Purchase Order" -msgstr "Phát hành đơn đặt mua" +msgstr "" #: templates/js/translated/purchase_order.js:631 msgid "At least one purchaseable part must be selected" -msgstr "Phải chọn ít nhất 1 sản phẩm có thể mua được" +msgstr "" #: templates/js/translated/purchase_order.js:656 msgid "Quantity to order" -msgstr "Số lượng cần đặt" +msgstr "" #: templates/js/translated/purchase_order.js:665 msgid "New supplier part" -msgstr "Sản phẩm nhà cung cấp mới" +msgstr "" #: templates/js/translated/purchase_order.js:683 msgid "New purchase order" -msgstr "Đơn đặt mua mới" +msgstr "" #: templates/js/translated/purchase_order.js:715 msgid "Add to purchase order" -msgstr "Thêm vào đơn đặt mua" +msgstr "" #: templates/js/translated/purchase_order.js:863 msgid "No matching supplier parts" -msgstr "Không thấy sản phẩm nhà cung cấp trùng khớp" +msgstr "" #: templates/js/translated/purchase_order.js:882 msgid "No matching purchase orders" -msgstr "Không thấy đơn đặt mua trùng khớp" +msgstr "" #: templates/js/translated/purchase_order.js:1069 msgid "Select Line Items" -msgstr "Chọn mục dòng" +msgstr "" #: templates/js/translated/purchase_order.js:1070 #: templates/js/translated/return_order.js:492 msgid "At least one line item must be selected" -msgstr "Phải chọn ít nhất một mục dòng" +msgstr "" #: templates/js/translated/purchase_order.js:1100 msgid "Received Quantity" -msgstr "Số lượng đã nhận" +msgstr "" #: templates/js/translated/purchase_order.js:1111 msgid "Quantity to receive" -msgstr "Số lượng cần nhận" +msgstr "" #: templates/js/translated/purchase_order.js:1187 msgid "Stock Status" -msgstr "Trạng thái kho" +msgstr "" #: templates/js/translated/purchase_order.js:1201 msgid "Add barcode" -msgstr "Thêm mã vạch" +msgstr "" #: templates/js/translated/purchase_order.js:1202 msgid "Remove barcode" -msgstr "Xóa mã vạch" +msgstr "" #: templates/js/translated/purchase_order.js:1205 msgid "Specify location" -msgstr "Chỉ định địa điểm" +msgstr "" #: templates/js/translated/purchase_order.js:1213 msgid "Add batch code" -msgstr "Thêm hàng loạt mã" +msgstr "" #: templates/js/translated/purchase_order.js:1224 msgid "Add serial numbers" -msgstr "Thêm số sêri" +msgstr "" #: templates/js/translated/purchase_order.js:1276 msgid "Serials" -msgstr "Sêri" +msgstr "" #: templates/js/translated/purchase_order.js:1301 msgid "Order Code" -msgstr "Mã đơn đặt" +msgstr "" #: templates/js/translated/purchase_order.js:1303 msgid "Quantity to Receive" -msgstr "Số lượng cần nhận" +msgstr "" #: templates/js/translated/purchase_order.js:1329 #: templates/js/translated/return_order.js:561 msgid "Confirm receipt of items" -msgstr "Xác nhận đơn nhận hàng hóa" +msgstr "" #: templates/js/translated/purchase_order.js:1330 msgid "Receive Purchase Order Items" -msgstr "Nhận hàng hóa đặt mua" +msgstr "" #: templates/js/translated/purchase_order.js:1398 msgid "Scan Item Barcode" -msgstr "Quét mã vạch hàng hóa" +msgstr "" #: templates/js/translated/purchase_order.js:1399 msgid "Scan barcode on incoming item (must not match any existing stock items)" -msgstr "Quét mã vạch trên hàng hóa đầu vào (phải không khớp với bất kỳ hàng hóa nào đang tồn tại)" +msgstr "" #: templates/js/translated/purchase_order.js:1413 msgid "Invalid barcode data" -msgstr "Dữ liệu mã vạch không hợp lệ" +msgstr "" #: templates/js/translated/purchase_order.js:1678 #: templates/js/translated/return_order.js:286 #: templates/js/translated/sales_order.js:774 #: templates/js/translated/sales_order.js:998 msgid "Order is overdue" -msgstr "Đơn đặt đã quá hạn" +msgstr "" #: templates/js/translated/purchase_order.js:1744 #: templates/js/translated/return_order.js:354 #: templates/js/translated/sales_order.js:851 #: templates/js/translated/sales_order.js:1011 msgid "Items" -msgstr "Hàng hóa" +msgstr "" #: templates/js/translated/purchase_order.js:1840 msgid "All selected Line items will be deleted" -msgstr "Đã xóa toàn bộ mục dòng được chọn" +msgstr "" #: templates/js/translated/purchase_order.js:1858 msgid "Delete selected Line items?" -msgstr "Xóa mục dòng đã chọn?" +msgstr "" #: templates/js/translated/purchase_order.js:1913 #: templates/js/translated/sales_order.js:2070 msgid "Duplicate Line Item" -msgstr "Nhân bản mục dòng" +msgstr "" #: templates/js/translated/purchase_order.js:1928 #: templates/js/translated/return_order.js:476 #: templates/js/translated/return_order.js:669 #: templates/js/translated/sales_order.js:2083 msgid "Edit Line Item" -msgstr "Sửa mục dòng" +msgstr "" #: templates/js/translated/purchase_order.js:1939 #: templates/js/translated/return_order.js:682 #: templates/js/translated/sales_order.js:2094 msgid "Delete Line Item" -msgstr "Xóa mục dòng" +msgstr "" #: templates/js/translated/purchase_order.js:2221 #: templates/js/translated/sales_order.js:2024 msgid "Duplicate line item" -msgstr "Nhân bản mục dòng" +msgstr "" #: templates/js/translated/purchase_order.js:2222 #: templates/js/translated/return_order.js:801 #: templates/js/translated/sales_order.js:2025 msgid "Edit line item" -msgstr "Sửa mục dòng" +msgstr "" #: templates/js/translated/purchase_order.js:2223 #: templates/js/translated/return_order.js:805 #: templates/js/translated/sales_order.js:2031 msgid "Delete line item" -msgstr "Xóa mục dòng" +msgstr "" #: templates/js/translated/report.js:63 msgid "items selected" -msgstr "hàng hóa đã chọn" +msgstr "" #: templates/js/translated/report.js:71 msgid "Select Report Template" -msgstr "Chọn mẫu báo cáo" +msgstr "" #: templates/js/translated/report.js:86 msgid "Select Test Report Template" -msgstr "Chọn mẫu báo cáo kiểm thử" +msgstr "" #: templates/js/translated/report.js:140 msgid "No Reports Found" -msgstr "Không tìm thấy báo cáo" +msgstr "" #: templates/js/translated/report.js:141 msgid "No report templates found which match the selected items" -msgstr "Không tìm thấy mẫu báo cáo phù hợp với hàng hóa đã chọn" +msgstr "" #: templates/js/translated/return_order.js:60 #: templates/js/translated/sales_order.js:86 msgid "Add Customer" -msgstr "Thêm khách hàng" +msgstr "" #: templates/js/translated/return_order.js:134 msgid "Create Return Order" -msgstr "Tạo đơn hàng trả lại" +msgstr "" #: templates/js/translated/return_order.js:149 msgid "Edit Return Order" -msgstr "Sửa đơn hàng trả lại" +msgstr "" #: templates/js/translated/return_order.js:169 msgid "Issue Return Order" -msgstr "Phát hành đơn hàng trả lại" +msgstr "" #: templates/js/translated/return_order.js:186 msgid "Are you sure you wish to cancel this Return Order?" -msgstr "Bạn có muốn hủy đơn hàng trả lại này?" +msgstr "" #: templates/js/translated/return_order.js:193 msgid "Cancel Return Order" -msgstr "Hủy đơn hàng trả lại" +msgstr "" #: templates/js/translated/return_order.js:218 msgid "Complete Return Order" -msgstr "Hoàn thành đơn hàng trả lại" +msgstr "" #: templates/js/translated/return_order.js:266 msgid "No return orders found" -msgstr "Không tìm thấy đơn hàng trả lại" +msgstr "" #: templates/js/translated/return_order.js:300 #: templates/js/translated/sales_order.js:788 msgid "Invalid Customer" -msgstr "Sai khách hàng" +msgstr "" #: templates/js/translated/return_order.js:562 msgid "Receive Return Order Items" -msgstr "Nhận hàng hóa trả lại" +msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" -msgstr "Không thấy hàng hóa phù hợp" +msgstr "" #: templates/js/translated/return_order.js:798 msgid "Mark item as received" -msgstr "Đánh dấu hàng hóa đã được nhận" +msgstr "" #: templates/js/translated/sales_order.js:161 msgid "Create Sales Order" -msgstr "Tạo đơn hàng bán" +msgstr "" #: templates/js/translated/sales_order.js:176 msgid "Edit Sales Order" -msgstr "Sửa đơn hàng bán" +msgstr "" #: templates/js/translated/sales_order.js:291 msgid "No stock items have been allocated to this shipment" -msgstr "Chưa phân bổ mặt hàng vào chuyển hàng này" +msgstr "" #: templates/js/translated/sales_order.js:296 msgid "The following stock items will be shipped" -msgstr "Mặt hàng dưới đây sẽ được vận chuyển" +msgstr "" #: templates/js/translated/sales_order.js:336 msgid "Complete Shipment" -msgstr "Hoàn thành chuyến hàng" +msgstr "" #: templates/js/translated/sales_order.js:360 msgid "Confirm Shipment" -msgstr "Xác nhận chuyến hàng" +msgstr "" #: templates/js/translated/sales_order.js:416 msgid "No pending shipments found" -msgstr "Không tìm thấy chuyển hàng chờ duyệt" +msgstr "" #: templates/js/translated/sales_order.js:420 msgid "No stock items have been allocated to pending shipments" -msgstr "Không có mặt hàng được phân bổ vào chuyến hàng đang chờ xử lý" +msgstr "" #: templates/js/translated/sales_order.js:430 msgid "Complete Shipments" -msgstr "Hoàn thiện chuyến hàng" +msgstr "" #: templates/js/translated/sales_order.js:452 msgid "Skip" -msgstr "Bỏ qua" +msgstr "" #: templates/js/translated/sales_order.js:513 msgid "This order has line items which have not been completed." -msgstr "Đơn hàng này có hạng mục chưa được hoàn thiện." +msgstr "" #: templates/js/translated/sales_order.js:535 msgid "Issue this Sales Order?" -msgstr "Phát hành đơn hàng bán này?" +msgstr "" #: templates/js/translated/sales_order.js:540 msgid "Issue Sales Order" -msgstr "Phát hành đơn hàng bán" +msgstr "" #: templates/js/translated/sales_order.js:559 msgid "Cancel Sales Order" -msgstr "Hủy đơn hàng bán" +msgstr "" #: templates/js/translated/sales_order.js:564 msgid "Cancelling this order means that the order will no longer be editable." -msgstr "Hủy bỏ đơn hàng này nghĩa là đơn hàng không thể sửa được nữa." +msgstr "" #: templates/js/translated/sales_order.js:618 msgid "Create New Shipment" -msgstr "Tạo chuyến hàng mới" +msgstr "" #: templates/js/translated/sales_order.js:728 msgid "No sales orders found" -msgstr "Không tìm thấy đơn hàng bán" +msgstr "" #: templates/js/translated/sales_order.js:908 msgid "Edit shipment" -msgstr "Sửa chuyến hàng" +msgstr "" #: templates/js/translated/sales_order.js:911 msgid "Complete shipment" -msgstr "Hoàn thành chuyến hàng" +msgstr "" #: templates/js/translated/sales_order.js:916 msgid "Delete shipment" -msgstr "Xóa chuyến hàng" +msgstr "" #: templates/js/translated/sales_order.js:933 msgid "Edit Shipment" -msgstr "Sửa chuyến hàng" +msgstr "" #: templates/js/translated/sales_order.js:948 msgid "Delete Shipment" -msgstr "Xóa chuyến hàng" +msgstr "" #: templates/js/translated/sales_order.js:981 msgid "No matching shipments found" -msgstr "Không tìm thấy chuyển hàng phù hợp" +msgstr "" #: templates/js/translated/sales_order.js:1006 msgid "Shipment Reference" -msgstr "Tham chiếu chuyến hàng" +msgstr "" #: templates/js/translated/sales_order.js:1030 #: templates/js/translated/sales_order.js:1529 msgid "Not shipped" -msgstr "Chưa giao hàng" +msgstr "" #: templates/js/translated/sales_order.js:1048 msgid "Tracking" -msgstr "Đang theo dõi" +msgstr "" #: templates/js/translated/sales_order.js:1052 msgid "Invoice" -msgstr "Hoá đơn" +msgstr "" #: templates/js/translated/sales_order.js:1219 msgid "Add Shipment" -msgstr "Thêm chuyến hàng" +msgstr "" #: templates/js/translated/sales_order.js:1270 msgid "Confirm stock allocation" -msgstr "Xác nhận phân bổ kho" +msgstr "" #: templates/js/translated/sales_order.js:1271 msgid "Allocate Stock Items to Sales Order" -msgstr "Phân bổ mặt hàng vào đơn hàng bán" +msgstr "" #: templates/js/translated/sales_order.js:1477 msgid "No sales order allocations found" -msgstr "Phân bổ đơn hàng bán không tồn tại" +msgstr "" #: templates/js/translated/sales_order.js:1569 msgid "Edit Stock Allocation" -msgstr "Sửa phân bổ kho" +msgstr "" #: templates/js/translated/sales_order.js:1583 msgid "Confirm Delete Operation" -msgstr "Xác nhận hoạt động xóa" +msgstr "" #: templates/js/translated/sales_order.js:1584 msgid "Delete Stock Allocation" -msgstr "Xóa phân bổ kho" +msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 #: templates/js/translated/stock.js:1744 msgid "Shipped to customer" -msgstr "Đã vận chuyển đến khách hàng" +msgstr "" #: templates/js/translated/sales_order.js:1631 #: templates/js/translated/sales_order.js:1719 msgid "Stock location not specified" -msgstr "Vị trí kho không được chỉ định" +msgstr "" #: templates/js/translated/sales_order.js:2008 msgid "Allocate serial numbers" -msgstr "Phân bổ số sêri" +msgstr "" #: templates/js/translated/sales_order.js:2012 msgid "Purchase stock" -msgstr "Kho mua" +msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" -msgstr "Tính giá" +msgstr "" #: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been shipped" -msgstr "Không thể xóa hàng hóa đã được vận chuyển" +msgstr "" #: templates/js/translated/sales_order.js:2038 msgid "Cannot be deleted as items have been allocated" -msgstr "Không thể xóa hàng hóa đã được phân bổ" +msgstr "" #: templates/js/translated/sales_order.js:2109 msgid "Allocate Serial Numbers" -msgstr "Phân bổ số sêri" +msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" -msgstr "Cập nhật đơn giá" +msgstr "" #: templates/js/translated/search.js:270 msgid "No results" -msgstr "Không có kết quả" +msgstr "" #: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" @@ -12538,826 +12808,822 @@ msgstr "Nhập truy vấn tìm kiếm" #: templates/js/translated/search.js:342 msgid "result" -msgstr "kết quả" +msgstr "" #: templates/js/translated/search.js:342 msgid "results" -msgstr "kết quả" +msgstr "" #: templates/js/translated/search.js:352 msgid "Minimize results" -msgstr "Thu nhỏ kết quả" +msgstr "" #: templates/js/translated/search.js:355 msgid "Remove results" -msgstr "Xóa kết quả" +msgstr "" #: templates/js/translated/stock.js:98 msgid "Serialize Stock Item" -msgstr "Sắp xếp hàng hóa trong kho" +msgstr "" #: templates/js/translated/stock.js:129 msgid "Confirm Stock Serialization" -msgstr "Xác nhận trình tự kho" +msgstr "" #: templates/js/translated/stock.js:139 msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" -msgstr "Biểu tượng mặc định cho vị trí không được thiết lập biểu tượng (tùy chọn) - Xem toàn bộ biểu tượng trên" +msgstr "" #: templates/js/translated/stock.js:152 msgid "Parent stock location" -msgstr "Vị trí kho cha" +msgstr "" #: templates/js/translated/stock.js:166 msgid "Add Location type" -msgstr "Thêm loại địa điểm" +msgstr "" #: templates/js/translated/stock.js:202 msgid "Edit Stock Location" -msgstr "Sửa vị trí kho" +msgstr "" #: templates/js/translated/stock.js:217 msgid "New Stock Location" -msgstr "Vị trí kho mới" +msgstr "" #: templates/js/translated/stock.js:219 msgid "Create another location after this one" -msgstr "Tạo vị trí khác sau cái này" +msgstr "" #: templates/js/translated/stock.js:220 msgid "Stock location created" -msgstr "Vị trí kho đã được tạo" +msgstr "" #: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" -msgstr "Bạn có muốn xóa vị trí kho này?" +msgstr "" #: templates/js/translated/stock.js:241 msgid "Move to parent stock location" -msgstr "Di chuyển đến vị trí kho cha" +msgstr "" #: templates/js/translated/stock.js:250 msgid "Delete Stock Location" -msgstr "Xóa vị trí kho" +msgstr "" #: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" -msgstr "Chức năng cho mặt hàng trong vị trí kho này" +msgstr "" #: templates/js/translated/stock.js:259 msgid "Action for sub-locations" -msgstr "Chức năng cho vị trí con" +msgstr "" #: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" -msgstr "Không thể trình tự hóa sản phẩm này" +msgstr "" #: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" -msgstr "Thêm số lượng đã có theo gói thay vì mặt hàng đơn lẻ" +msgstr "" #: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" -msgstr "Nhập số lượng ban đầu cho mặt hàng này" +msgstr "" #: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "Nhập số sêri cho kho mới (hoặc bỏ trống)" +msgstr "" #: templates/js/translated/stock.js:439 msgid "Stock item duplicated" -msgstr "Mặt hàng đã được nhân bản" +msgstr "" #: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" -msgstr "Nhân bản mặt hàng" +msgstr "" #: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" -msgstr "Bạn có muốn xóa mặt hàng này?" +msgstr "" #: templates/js/translated/stock.js:480 msgid "Delete Stock Item" -msgstr "Xóa mặt hàng" +msgstr "" #: templates/js/translated/stock.js:501 msgid "Edit Stock Item" -msgstr "Sửa mặt hàng" +msgstr "" #: templates/js/translated/stock.js:543 msgid "Create another item after this one" -msgstr "Tạo mặt hàng khác sau cái này" +msgstr "" #: templates/js/translated/stock.js:555 msgid "Created new stock item" -msgstr "Thêm mới mặt hàng" +msgstr "" #: templates/js/translated/stock.js:568 msgid "Created multiple stock items" -msgstr "Nhiều mặt hàng đã tạo" +msgstr "" #: templates/js/translated/stock.js:593 msgid "Find Serial Number" -msgstr "Tìm số sêri" +msgstr "" #: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "Điền số sêri" +msgstr "" #: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "Điền một số sêri" +msgstr "" #: templates/js/translated/stock.js:634 msgid "No matching serial number" -msgstr "Số sêri không trùng khớp" +msgstr "" #: templates/js/translated/stock.js:643 msgid "More than one matching result found" -msgstr "Tìm thấy nhiều hơn một kết quả phù hợp" +msgstr "" #: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" -msgstr "Xác nhận phân kho" +msgstr "" #: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" -msgstr "Phân kho đến khách hàng" +msgstr "" #: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" -msgstr "Cảnh báo: Hoạt động gộp không thể phục hồi" +msgstr "" #: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" -msgstr "Một số thông tin sẽ mất khi gộp mặt hàng" +msgstr "" #: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" -msgstr "Sẽ xóa lịch sử giao dịch kho cho việc gộp hàng hóa" +msgstr "" #: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" -msgstr "Sẽ xóa thông tin sản phẩm nhà cung cấp khi gộp hàng hóa" +msgstr "" #: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" -msgstr "Xác nhận gộp mặt hàng" +msgstr "" #: templates/js/translated/stock.js:929 msgid "Merge Stock Items" -msgstr "Gộp mặt hàng" +msgstr "" #: templates/js/translated/stock.js:1024 msgid "Transfer Stock" -msgstr "Chuyển kho" +msgstr "" #: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "Di chuyển" +msgstr "" #: templates/js/translated/stock.js:1031 msgid "Count Stock" -msgstr "Đếm hàng" +msgstr "" #: templates/js/translated/stock.js:1032 msgid "Count" -msgstr "Đếm" +msgstr "" #: templates/js/translated/stock.js:1036 msgid "Remove Stock" -msgstr "Xóa hàng hóa" +msgstr "" #: templates/js/translated/stock.js:1037 msgid "Take" -msgstr "Lấy" +msgstr "" #: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "Thêm kho" +msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "Thêm" #: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "Xóa kho" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" -msgstr "Không thể điều chỉnh số lượng cho kho tuần tự" +msgstr "" #: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" -msgstr "Chỉ ra số lượng kho" +msgstr "" #: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" -msgstr "Chọn mặt hàng" +msgstr "" #: templates/js/translated/stock.js:1178 msgid "Select at least one available stock item" -msgstr "Chọn ít nhất một mặt hàng có sẵn" +msgstr "" #: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" -msgstr "Xác nhận điều chỉnh kho" +msgstr "" #: templates/js/translated/stock.js:1360 msgid "PASS" -msgstr "QUA" +msgstr "" #: templates/js/translated/stock.js:1362 msgid "FAIL" -msgstr "HỎNG" +msgstr "" #: templates/js/translated/stock.js:1367 msgid "NO RESULT" -msgstr "KHÔNG KẾT QUẢ" +msgstr "" #: templates/js/translated/stock.js:1429 msgid "Pass test" -msgstr "Qua kiểm thử" +msgstr "" #: templates/js/translated/stock.js:1432 msgid "Add test result" -msgstr "Thêm kết quả kiểm thử" +msgstr "" #: templates/js/translated/stock.js:1456 msgid "No test results found" -msgstr "Không tìm thấy kết quả kiểm thử" +msgstr "" #: templates/js/translated/stock.js:1520 msgid "Test Date" -msgstr "Ngày kiểm thử" +msgstr "" #: templates/js/translated/stock.js:1682 msgid "Edit Test Result" -msgstr "Sửa kết quả kiểm thử" +msgstr "" #: templates/js/translated/stock.js:1704 msgid "Delete Test Result" -msgstr "Xóa kết quả kiểm thử" +msgstr "" #: templates/js/translated/stock.js:1736 msgid "In production" -msgstr "Đang sản xuất" +msgstr "" #: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" -msgstr "Đã cài đặt trong mặt hàng" +msgstr "" #: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" -msgstr "Được chỉ định đơn hàng bán" +msgstr "" #: templates/js/translated/stock.js:1754 msgid "No stock location set" -msgstr "Chưa đặt vị trí kho" +msgstr "" #: templates/js/translated/stock.js:1810 msgid "Change stock status" -msgstr "Đổi vị trí kho" +msgstr "" #: templates/js/translated/stock.js:1819 msgid "Merge stock" -msgstr "Gộp kho" +msgstr "" #: templates/js/translated/stock.js:1868 msgid "Delete stock" -msgstr "Xóa kho" +msgstr "" #: templates/js/translated/stock.js:1923 msgid "stock items" -msgstr "mặt hàng" +msgstr "" #: templates/js/translated/stock.js:1928 msgid "Scan to location" -msgstr "Quét đến vị trí" +msgstr "" #: templates/js/translated/stock.js:1939 msgid "Stock Actions" -msgstr "Chức năng kho" +msgstr "" #: templates/js/translated/stock.js:1983 msgid "Load installed items" -msgstr "Tải mặt hàng đã cài đặt" +msgstr "" #: templates/js/translated/stock.js:2061 msgid "Stock item is in production" -msgstr "Mặt hàng đang được sản xuất" +msgstr "" #: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" -msgstr "Mặt hàng đã được chỉ định vào đơn hàng bán" +msgstr "" #: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" -msgstr "Mặt hàng được chỉ định cho khách hàng" +msgstr "" #: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" -msgstr "Mặt hàng tuần tự đã được phân bổ" +msgstr "" #: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" -msgstr "Mặt hàng đã được phân bổ toàn phần" +msgstr "" #: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" -msgstr "Mặt hàng đã được phân bổ từng phần" +msgstr "" #: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" -msgstr "Mặt hàng đã được cài đặt trong hàng hóa khác" +msgstr "" #: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" -msgstr "Mặt hàng đã bị lấy đi bởi đơn đặt bản dựng" +msgstr "" #: templates/js/translated/stock.js:2085 msgid "Stock item has expired" -msgstr "Mặt hàng đã hết hạn" +msgstr "" #: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" -msgstr "Mặt hàng sắp hết hạn" +msgstr "" #: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" -msgstr "Mặt hàng đã bị từ chối" +msgstr "" #: templates/js/translated/stock.js:2094 msgid "Stock item is lost" -msgstr "Mặt hàng đã mất" +msgstr "" #: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" -msgstr "Mặt hàng đã bị phá hủy" +msgstr "" #: templates/js/translated/stock.js:2100 #: templates/js/translated/table_filters.js:350 msgid "Depleted" -msgstr "Cạn kiệt" +msgstr "" #: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" -msgstr "Sản phẩm nhà cung cấp chưa được chỉ định" +msgstr "" #: templates/js/translated/stock.js:2312 msgid "Stock Value" -msgstr "Giá trị kho" +msgstr "" #: templates/js/translated/stock.js:2440 msgid "No stock items matching query" -msgstr "Không tìm thấy mặt hàng theo truy vấn tìm kiếm" +msgstr "" #: templates/js/translated/stock.js:2544 msgid "stock locations" -msgstr "vị trí kho hàng" +msgstr "" #: templates/js/translated/stock.js:2699 msgid "Load Sublocations" -msgstr "Tải vị trí phụ" +msgstr "" #: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "Chi tiết" +msgstr "" #: templates/js/translated/stock.js:2821 msgid "No changes" -msgstr "Không thay đổi" +msgstr "" #: templates/js/translated/stock.js:2833 msgid "Part information unavailable" -msgstr "Thông tin sản phẩm không có sẵn" +msgstr "" #: templates/js/translated/stock.js:2855 msgid "Location no longer exists" -msgstr "Vị trí không còn tồn tại" +msgstr "" #: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" -msgstr "Đơn đặt bản dựng không tồn tại" +msgstr "" #: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" -msgstr "Đơn đặt mua không còn tồn tại" +msgstr "" #: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" -msgstr "Đơn hàng bán không còn tồn tại" +msgstr "" #: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" -msgstr "Đơn hàng trả lại không còn tồn tại" +msgstr "" #: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" -msgstr "Khách hàng không còn tồn tại" +msgstr "" #: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" -msgstr "Mặt hàng không còn tồn tại nữa" +msgstr "" #: templates/js/translated/stock.js:2976 msgid "Added" -msgstr "Đã thêm" +msgstr "" #: templates/js/translated/stock.js:2984 msgid "Removed" -msgstr "Đã xóa" +msgstr "" #: templates/js/translated/stock.js:3056 msgid "No installed items" -msgstr "Chưa có hàng hóa được cài đặt" +msgstr "" #: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" -msgstr "Gỡ bỏ mặt hàng" +msgstr "" #: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" -msgstr "Chọn mặt hàng để gỡ bỏ" +msgstr "" #: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" -msgstr "Cài đặt mặt hàng khác vào trong hàng hóa này" +msgstr "" #: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" -msgstr "Chỉ có thể cài đặt hàng hóa nếu chúng phù hợp điều kiện sau" +msgstr "" #: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" -msgstr "Liên kết mặt hàng đến một sản phẩm là BOM cho mặt hàng này" +msgstr "" #: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" -msgstr "Mặt hàng hiện có trong kho" +msgstr "" #: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" -msgstr "Mặt hàng hiện chưa được cài đặt trong hàng hóa khác" +msgstr "" #: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" -msgstr "Mặt hàng được theo dõi bởi hoặc là mã lô hoặc là số sêri" +msgstr "" #: templates/js/translated/stock.js:3205 msgid "Select part to install" -msgstr "Chọn sản phẩm để cài đặt" +msgstr "" #: templates/js/translated/stock.js:3268 msgid "Select one or more stock items" -msgstr "Chọn một hoặc nhiều hơn mặt hàng" +msgstr "" #: templates/js/translated/stock.js:3281 msgid "Selected stock items" -msgstr "Mặt hàng đã chọn" +msgstr "" #: templates/js/translated/stock.js:3285 msgid "Change Stock Status" -msgstr "Đổi trạng thái kho" +msgstr "" #: templates/js/translated/table_filters.js:74 msgid "Has project code" -msgstr "Có mã dự án" +msgstr "" #: templates/js/translated/table_filters.js:89 #: templates/js/translated/table_filters.js:601 #: templates/js/translated/table_filters.js:613 #: templates/js/translated/table_filters.js:654 msgid "Order status" -msgstr "Trạng thái đơn" +msgstr "" #: templates/js/translated/table_filters.js:94 #: templates/js/translated/table_filters.js:618 #: templates/js/translated/table_filters.js:644 #: templates/js/translated/table_filters.js:659 msgid "Outstanding" -msgstr "Nổi bật" +msgstr "" #: templates/js/translated/table_filters.js:102 #: templates/js/translated/table_filters.js:524 #: templates/js/translated/table_filters.js:626 #: templates/js/translated/table_filters.js:667 msgid "Assigned to me" -msgstr "Được phân công cho tôi" +msgstr "" #: templates/js/translated/table_filters.js:158 msgid "Trackable Part" -msgstr "Sản phẩm theo dõi được" +msgstr "" #: templates/js/translated/table_filters.js:162 msgid "Assembled Part" -msgstr "Sản phẩm đã lắp ráp" +msgstr "" #: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" -msgstr "Số hàng tồn" +msgstr "" #: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" -msgstr "Cho phép hàng tồn biển thể" +msgstr "" #: templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:775 msgid "Has Pricing" -msgstr "Có định giá" +msgstr "" #: templates/js/translated/table_filters.js:234 #: templates/js/translated/table_filters.js:345 msgid "Include sublocations" -msgstr "Bao gồm vị trí phụ" +msgstr "" #: templates/js/translated/table_filters.js:235 msgid "Include locations" -msgstr "Bao gồm vị trí phụ" +msgstr "" #: templates/js/translated/table_filters.js:267 msgid "Has location type" -msgstr "Có loại vị trí" +msgstr "" #: templates/js/translated/table_filters.js:278 #: templates/js/translated/table_filters.js:279 #: templates/js/translated/table_filters.js:707 msgid "Include subcategories" -msgstr "Bao gồm danh mục con" +msgstr "" #: templates/js/translated/table_filters.js:287 #: templates/js/translated/table_filters.js:755 msgid "Subscribed" -msgstr "Đã đăng ký" +msgstr "" #: templates/js/translated/table_filters.js:298 #: templates/js/translated/table_filters.js:380 msgid "Is Serialized" -msgstr "Được tuần tự hóa" +msgstr "" #: templates/js/translated/table_filters.js:301 #: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" -msgstr "Số sêri GTE" +msgstr "" #: templates/js/translated/table_filters.js:302 #: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" -msgstr "Số sêri lớn hơn hoặc bằng" +msgstr "" #: templates/js/translated/table_filters.js:305 #: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" -msgstr "Số sêri LTE" +msgstr "" #: templates/js/translated/table_filters.js:306 #: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" -msgstr "Số sêri nhỏ hơn hoặc bằng" +msgstr "" #: templates/js/translated/table_filters.js:309 #: templates/js/translated/table_filters.js:310 #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "Số sê-ri" +msgstr "" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 msgid "Batch code" -msgstr "Mã lô hàng" +msgstr "" #: templates/js/translated/table_filters.js:325 #: templates/js/translated/table_filters.js:696 msgid "Active parts" -msgstr "Sản phẩm hoạt động" +msgstr "" #: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" -msgstr "Hiển thị kho cho sản phẩm hoạt động" +msgstr "" #: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" -msgstr "Sản phẩm là một phần lắp lắp" +msgstr "" #: templates/js/translated/table_filters.js:335 msgid "Is allocated" -msgstr "Đã được phân bổ" +msgstr "" #: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" -msgstr "Hàng hóa đã được phân bổ" +msgstr "" #: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" -msgstr "Kho có sẵn để sử dụng" +msgstr "" #: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" -msgstr "Bao gồm kho trong vị trí phụ" +msgstr "" #: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" -msgstr "Hiển thị mặt hàng đã bị xóa" +msgstr "" #: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" -msgstr "Hiện hàng hóa còn trong kho" - -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "Đang sản xuất" +msgstr "" #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" -msgstr "Hiện hàng hóa đang được sản xuất" +msgstr "" #: templates/js/translated/table_filters.js:365 msgid "Include Variants" -msgstr "Bao gồm các biến thể" +msgstr "" #: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" -msgstr "Bao gồm mặt hàng cho sản phẩm biến thể" +msgstr "" #: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" -msgstr "Hiển thị mặt hàng được cài đặt trong hàng hóa khác" +msgstr "" #: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" -msgstr "Hiển thị hàng hóa đã được chỉ định cho 1 khách hàng" +msgstr "" #: templates/js/translated/table_filters.js:396 #: templates/js/translated/table_filters.js:397 msgid "Stock status" -msgstr "Tình trạng kho hàng" +msgstr "" #: templates/js/translated/table_filters.js:400 msgid "Has batch code" -msgstr "Có mã lô" +msgstr "" #: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" -msgstr "Theo dõi mặt hàng hoặc là theo mã lô hoặc là theo số sêri" +msgstr "" #: templates/js/translated/table_filters.js:414 msgid "Has purchase price" -msgstr "Có giá mua" +msgstr "" #: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" -msgstr "Hiển thị mặt hàng có giá mua được đặt" +msgstr "" #: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" -msgstr "Ngày hết hạn trước đó" +msgstr "" #: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" -msgstr "Ngày hết hạn sau đó" +msgstr "" #: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" -msgstr "Hiển thị mặt hàng đã hết hạn" +msgstr "" #: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" -msgstr "Hiển thị mặt hàng sắp hết hạn" +msgstr "" #: templates/js/translated/table_filters.js:456 msgid "Test Passed" -msgstr "Đã qua kiểm thử" +msgstr "" #: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" -msgstr "Bao gồm hàng hóa đã được cài đặt" +msgstr "" #: templates/js/translated/table_filters.js:511 msgid "Build status" -msgstr "Trạng thái bản dựng" +msgstr "" #: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" -msgstr "Bao gồm sản phẩm trong danh mục con" +msgstr "" #: templates/js/translated/table_filters.js:713 msgid "Show active parts" -msgstr "Hiển thị sản phẩm hoạt động" +msgstr "" #: templates/js/translated/table_filters.js:721 msgid "Available stock" -msgstr "Kho có sẵn" +msgstr "" #: templates/js/translated/table_filters.js:729 #: templates/js/translated/table_filters.js:825 msgid "Has Units" -msgstr "Có đơn vị" +msgstr "" #: templates/js/translated/table_filters.js:730 msgid "Part has defined units" -msgstr "Sản phẩm có đơn vị được định nghĩa" +msgstr "" #: templates/js/translated/table_filters.js:734 msgid "Has IPN" -msgstr "Có IPN" +msgstr "" #: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" -msgstr "Sản phẩm có số sản phẩm nội bộ" +msgstr "" #: templates/js/translated/table_filters.js:739 msgid "In stock" -msgstr "Trong kho" +msgstr "" #: templates/js/translated/table_filters.js:747 msgid "Purchasable" -msgstr "Có thể mua" +msgstr "" #: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" -msgstr "Có mục kiểm kê" +msgstr "" #: templates/js/translated/table_filters.js:821 msgid "Has Choices" -msgstr "Có lựa chọn" +msgstr "" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "Hiện khung lịch" +msgstr "" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "Hiển thị danh sách" +msgstr "" #: templates/js/translated/tables.js:112 msgid "Display tree view" -msgstr "Hiển thị dạng cây" +msgstr "" #: templates/js/translated/tables.js:130 msgid "Expand all rows" -msgstr "Mở rộng tất cả dòng" +msgstr "" #: templates/js/translated/tables.js:136 msgid "Collapse all rows" -msgstr "Thu gọn tất cả dòng" +msgstr "" #: templates/js/translated/tables.js:186 msgid "Export Table Data" -msgstr "Xuất dữ liệu bảng" +msgstr "" #: templates/js/translated/tables.js:190 msgid "Select File Format" -msgstr "Chọn định dạng tệp" +msgstr "" #: templates/js/translated/tables.js:529 msgid "Loading data" -msgstr "Đang nạp dữ liệu" +msgstr "" #: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "dòng trên trang" +msgstr "" #: templates/js/translated/tables.js:537 msgid "Showing all rows" -msgstr "Hiển thị toàn bộ dòng" +msgstr "" #: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "Đang hiển thị" +msgstr "" #: templates/js/translated/tables.js:539 msgid "to" -msgstr "đến" +msgstr "" #: templates/js/translated/tables.js:539 msgid "of" -msgstr "của" +msgstr "" #: templates/js/translated/tables.js:539 msgid "rows" -msgstr "dòng" +msgstr "" #: templates/js/translated/tables.js:546 msgid "No matching results" -msgstr "Không tìm thấy kết quả phù hợp" +msgstr "" #: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" -msgstr "Ẩn/hiện phân trang" +msgstr "" #: templates/js/translated/tables.js:555 msgid "Toggle" -msgstr "Đảo chiều" +msgstr "" #: templates/js/translated/tables.js:558 msgid "Columns" -msgstr "Cột" +msgstr "" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "Tất cả" +msgstr "" #: templates/navbar.html:45 msgid "Buy" @@ -13463,11 +13729,16 @@ msgstr "Nhà cung cấp SSO không hợp lệ" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "Nhà cung cấp SSO đã chọn không hợp lệ hoặc đã không được cấu hình chính xác" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" -msgstr "Bạn chuân bị sử dụng tài khoản %(provider_name)s của bạn để đăng nhập%(site_name)s
Vì là bước cuối cùng, xin hãy hoàn thiện biểu mẫu dưới đây:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" +msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 msgid "Provider has not been configured" @@ -13545,27 +13816,27 @@ msgstr "Có" msgid "No" msgstr "Không" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "Người dùng" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "Chọn người dùng được chỉ định cho nhóm này" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "Người dùng sau là thành viên của nhiều nhóm" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "Thông tin cá nhân" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "Quyền" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "Ngày quan trọng" @@ -13609,35 +13880,35 @@ msgstr "Lần cuối mã thông báo được sử dụng" msgid "Revoked" msgstr "Đã thu hồi" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "Quyền hạn đã đặt" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "Nhóm" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "Xem" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "Quyền để xem mục" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "Quyền để thêm mục" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "Đổi" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Quyển để sửa mục" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "Quyền để xóa mục" diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po index c5c8254b0c..0d5a82b566 100644 --- a/InvenTree/locale/zh/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-15 13:52+0000\n" -"PO-Revision-Date: 2024-01-16 13:32\n" +"POT-Creation-Date: 2024-02-14 14:18+0000\n" +"PO-Revision-Date: 2024-02-15 02:43\n" "Last-Translator: \n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "找不到 API 端點" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "使用者沒有檢視此模型的權限" @@ -43,7 +43,7 @@ msgstr "" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "詳細的錯誤訊息可以在管理介面中瀏覽" @@ -51,18 +51,18 @@ msgstr "詳細的錯誤訊息可以在管理介面中瀏覽" msgid "Enter date" msgstr "輸入日期" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -123,154 +123,286 @@ msgstr "所提供的主要Email無效。" msgid "The provided email domain is not approved." msgstr "所提供的Email網域尚未被核准。" -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "註冊功能已停用。" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "提供的數量無效" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "序號為空白" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "重複的序號" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "找不到序號" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "從這個值中移除HTML標籤" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "連線錯誤" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "伺服器回應了無效的狀態碼" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "發生異常" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "伺服器回應了不正確的Content-Length值。" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "圖片尺寸過大" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "圖片超過最大可下載的尺寸" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "遠端伺服器回傳了空白回應" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "提供的URL不是有效的圖片檔案" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" -msgstr "[{site.name}] 登入 App" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "捷克文" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "丹麥文" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "德文" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "希臘文" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "英文" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "西班牙文" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "西班牙文(墨西哥)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "波斯語" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "芬蘭文" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "法文" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "希伯來文" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "匈牙利文" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "義大利文" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "日文" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "韓文" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "荷蘭文" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "挪威文" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "波蘭文" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "葡萄牙文" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "葡萄牙文(巴西)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "俄文" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "斯洛維尼亞文" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "瑞典文" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "泰文" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "土耳其文" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "越南文" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "中文(简体)" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "中文(繁體)" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "Email" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "Metadata必須是一個Python Dictionary物件" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "外掛程式Metadata" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "外掛程式使用的JSON Metadata欄位" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "格式錯誤" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "指定了不明的格式鍵值" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "缺少必須的格式鍵值" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "參考欄位不能空白" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "參考欄位並須符合格式" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "參考編號過大" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "缺少檔案" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "缺少外部連結" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "附件" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "選擇附件" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -281,71 +413,72 @@ msgstr "選擇附件" msgid "Link" msgstr "連結" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "外部URL連結" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "註解" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "檔案註解" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "使用者" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "上傳日期" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "檔名不得空白" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "無效的附件目錄" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "檔名內有不允許的字元 '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "檔案名稱缺少副檔名" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "已有同檔案名稱的附件" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "重新命名時發生錯誤" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "同一個上層元件下不能有重複的名字" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "無效的選項" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -361,25 +494,25 @@ msgstr "無效的選項" msgid "Name" msgstr "名稱" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -398,272 +531,149 @@ msgstr "名稱" msgid "Description" msgstr "描述" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "描述(選填)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "上層元素" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "路徑" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 msgid "Markdown notes (optional)" msgstr "Markdown 註記(選填)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "條碼資料" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "第三方條碼資料" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "條碼雜湊值" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "條碼資料的唯一雜湊值" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "發現現有條碼" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "伺服器錯誤" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "伺服器紀錄了一個錯誤。" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "必須是有效的數字" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "貨幣" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "從可用選項中選擇貨幣" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "Your account has been created.\n\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "檔案名稱" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "無效的值" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "資料檔" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "選擇要上傳的資料檔案" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "不支援的檔案類型" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "檔案大小過大" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "檔案中找不到欄位" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "檔案中找不到資料列" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "沒有提供資料列" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "沒有提供資料欄位" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "找不到必須的欄位: 「{name}」" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "重複的欄位:「{col}」" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "遠端圖片的URL" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "尚未啟用從遠端URL下載圖片" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "捷克文" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "丹麥文" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "德文" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "希臘文" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "英文" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "西班牙文" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "西班牙文(墨西哥)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "波斯語" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "芬蘭文" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "法文" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "希伯來文" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "匈牙利文" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "義大利文" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "日文" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "韓文" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "荷蘭文" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "挪威文" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "波蘭文" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "葡萄牙文" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "葡萄牙文(巴西)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "俄文" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "斯洛維尼亞文" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "瑞典文" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "泰文" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "土耳其文" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "越南文" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "中文(简体)" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "中文(繁體)" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "背景工作程式檢查失敗" @@ -712,7 +722,7 @@ msgstr "已退回" msgid "In Progress" msgstr "進行中" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -875,10 +885,6 @@ msgstr "拒絕" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -927,16 +933,16 @@ msgstr "關於InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "工單必須被取消才能被刪除" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "耗材" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -948,18 +954,18 @@ msgstr "非必須項目" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "已分配" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -969,16 +975,16 @@ msgstr "已分配" msgid "Available" msgstr "可用數量" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "生產工單" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -989,27 +995,27 @@ msgstr "生產工單" msgid "Build Orders" msgstr "生產工單" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "無效的上層生產工單選擇" -#: build/models.py:127 +#: build/models.py:126 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "生產工單代號" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1017,27 +1023,27 @@ msgstr "生產工單代號" msgid "Reference" msgstr "參考代號" -#: build/models.py:183 +#: build/models.py:182 msgid "Brief description of the build (optional)" msgstr "關於生產工單的簡單說明(選填)" -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "上層生產工單" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "這張生產工單對應的上層生產工單" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1048,7 +1054,7 @@ msgstr "這張生產工單對應的上層生產工單" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1056,8 +1062,8 @@ msgstr "這張生產工單對應的上層生產工單" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1081,144 +1087,144 @@ msgstr "這張生產工單對應的上層生產工單" msgid "Part" msgstr "零件" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "選擇要生產的零件" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "銷售訂單代號" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "這張生產工單對應的銷售訂單" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "來源倉儲地點" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "選擇領取料件的倉儲地點(留白表示可以從任何地點領取)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "目標倉儲地點" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "選擇要存放成品的倉儲地點" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "生產數量" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "要生產的庫存品數量" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "已完成項目" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "已經完成的庫存品數量" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "生產狀態" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "生產狀態代碼" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "批量代碼" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "本批次成品的生產批號" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "建立日期" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "目標完成日期" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "生產的預計完成日期。若超過此日期則工單會逾期。" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "完成日期" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "完成者" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "發布者" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "發布此生產工單的使用者" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "負責人" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "負責此生產工單的使用者或群組" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "外部連結" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "製造優先度" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "此生產工單的優先程度" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1227,52 +1233,52 @@ msgstr "此生產工單的優先程度" msgid "Project Code" msgstr "專案代碼" -#: build/models.py:322 +#: build/models.py:321 msgid "Project code for this build order" msgstr "此生產工單隸屬的專案代碼" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "生產工單 {build} 已經完成" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "一張生產工單已經完成" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "尚未指定生產品項" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "生產成品已經完成" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "生產品項與生產工單不符" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "數量必須大於零" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "數量不能大於工單生產數量" -#: build/models.py:1279 +#: build/models.py:1278 msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1282,15 +1288,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1314,41 +1320,41 @@ msgstr "" msgid "Quantity" msgstr "數量" -#: build/models.py:1294 +#: build/models.py:1293 msgid "Required quantity for build order" msgstr "生產工單所需數量" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "分配的數量({q})不能超過可用的庫存數量({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "庫存品項超額分配" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "分配的數量必須大於零" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "有序號的品項數量必須為1" -#: build/models.py:1466 +#: build/models.py:1465 msgid "Selected stock item does not match BOM line" msgstr "選擇的庫存品項和BOM的項目不符" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1360,89 +1366,89 @@ msgstr "選擇的庫存品項和BOM的項目不符" msgid "Stock Item" msgstr "庫存品項" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "來源庫存項目" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "要分配的庫存數量" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "安裝到" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "目的庫存品項" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "產出" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "產出與上層生產工單不符" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "產出零件與生產工單不符" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "此筆產出已完成" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "此筆產出的分配尚未完成" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "輸入產出數量" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "可追蹤的零件數量必須為整數" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "因為BOM包含可追蹤的零件,所以數量必須為整數" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "序號" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "輸入產出的序號" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "自動分配序號" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "自動為需要項目分配對應的序號" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "序號已存在或無效" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "必須提供產出清單" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1455,32 +1461,32 @@ msgstr "必須提供產出清單" msgid "Location" msgstr "地點" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "報廢的庫存位置" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "放棄分配" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1490,159 +1496,188 @@ msgstr "" msgid "Status" msgstr "狀態" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "接受未分配" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "接受不完整" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "商品必須有庫存" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "排除位置" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "可互換庫存" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "" @@ -1768,12 +1803,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1806,8 +1841,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1829,7 +1864,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "優先等級" @@ -1857,7 +1892,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "" @@ -1870,9 +1905,9 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1886,7 +1921,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "" @@ -1985,11 +2020,11 @@ msgstr "附件" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -2043,1410 +2078,1431 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 msgid "Project description" msgstr "" -#: common/models.py:143 +#: common/models.py:146 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1102 +#: common/models.py:1141 msgid "No plugin" msgstr "" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1185 +#: common/models.py:1224 msgid "Pending migrations" msgstr "" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "天" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "自動備份" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "啟動資料庫和媒體文件自動備份" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "自動備份間隔" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 msgid "Part Revisions" msgstr "" -#: common/models.py:1352 +#: common/models.py:1391 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 msgid "Enable project codes" msgstr "" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1899 +#: common/models.py:1944 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 msgid "Search Return Orders" msgstr "" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 msgid "Regex Search" msgstr "" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 msgid "Default part label template" msgstr "" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 msgid "Default stock item template" msgstr "" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 msgid "Default stock location label template" msgstr "" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3454,101 +3510,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3558,31 +3614,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2883 +#: common/models.py:2938 msgid "Image file" msgstr "" -#: common/models.py:2925 +#: common/models.py:2980 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:2944 +#: common/models.py:2999 msgid "Unit name" msgstr "" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 msgid "Optional unit symbol" msgstr "" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3620,6 +3676,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3658,184 +3774,184 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:378 +#: company/models.py:375 msgid "Select company" msgstr "" -#: company/models.py:383 +#: company/models.py:380 msgid "Address title" msgstr "" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 msgid "Primary address" msgstr "" -#: company/models.py:391 +#: company/models.py:388 msgid "Set as primary address" msgstr "" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 msgid "Address line 1" msgstr "" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 msgid "Address line 2" msgstr "" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 msgid "Address country" msgstr "" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 msgid "Internal shipping notes" msgstr "" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -3847,11 +3963,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -3862,67 +3978,67 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -3937,58 +4053,58 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -3998,27 +4114,27 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4080,10 +4196,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4098,7 +4214,7 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4343,7 +4459,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4445,7 +4561,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4484,6 +4600,10 @@ msgstr "" msgid "New Company" msgstr "" +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + #: label/models.py:115 msgid "Label name" msgstr "" @@ -4500,7 +4620,7 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "" @@ -4524,7 +4644,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "" @@ -4538,8 +4658,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "" @@ -4556,7 +4676,108 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:229 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:240 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:241 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:247 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4569,7 +4790,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4583,7 +4804,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4592,192 +4813,188 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 msgid "Total price for this order" msgstr "" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 msgid "Order Currency" msgstr "" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:260 +#: order/models.py:265 msgid "Order description (optional)" msgstr "" -#: order/models.py:269 +#: order/models.py:274 msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:314 +#: order/models.py:319 msgid "Point of contact for this order" msgstr "" -#: order/models.py:324 +#: order/models.py:329 msgid "Company address for this order" msgstr "" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4787,325 +5004,325 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1976 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:546 +#: order/serializers.py:548 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1602 +#: order/serializers.py:1604 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 msgid "Line price currency" msgstr "" @@ -5289,8 +5506,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5509,13 +5726,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5523,20 +5740,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5561,11 +5778,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5575,33 +5792,26 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5614,7 +5824,7 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5637,51 +5847,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" @@ -5690,380 +5900,375 @@ msgstr "" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 msgid "Part description (optional)" msgstr "" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "" -#: part/models.py:1080 +#: part/models.py:1092 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6075,322 +6280,318 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 msgid "Choices must be unique" msgstr "" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6486,197 +6687,197 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 msgid "Existing Image" msgstr "" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -6837,7 +7038,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7129,10 +7330,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7247,7 +7444,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7401,11 +7598,15 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "" @@ -7463,7 +7664,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7562,6 +7763,18 @@ msgstr "" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:95 +msgid "Error rendering label to PNG" +msgstr "" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7574,6 +7787,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7642,6 +7856,22 @@ msgstr "" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" msgstr "" @@ -7662,7 +7892,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -7734,84 +7964,112 @@ msgstr "" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 msgid "Installed plugin successfully" msgstr "" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, python-brace-format msgid "Installed plugin into {path}" msgstr "" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 -msgid "Plugin Configuration" +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:297 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:310 +msgid "Uninstalled plugin successfully" msgstr "" #: plugin/models.py:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -7856,70 +8114,84 @@ msgstr "" msgid "InvenTree Contributors" msgstr "" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "" @@ -7949,103 +8221,103 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8086,9 +8358,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8112,12 +8384,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8143,32 +8415,32 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 msgid "Image file not found" msgstr "" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8177,56 +8449,56 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 msgid "Status Code" msgstr "" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8236,56 +8508,56 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:63 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8297,12 +8569,12 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8332,225 +8604,225 @@ msgstr "" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:853 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8558,157 +8830,161 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:514 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:715 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -8845,7 +9121,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8911,7 +9187,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "" @@ -9142,7 +9418,7 @@ msgstr "" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "訂閱零件通知" +msgstr "" #: templates/InvenTree/index.html:52 msgid "Subscribed Categories" @@ -9150,7 +9426,7 @@ msgstr "" #: templates/InvenTree/index.html:62 msgid "Latest Parts" -msgstr "最近零件" +msgstr "" #: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" @@ -9158,7 +9434,7 @@ msgstr "" #: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "最近更新" +msgstr "" #: templates/InvenTree/index.html:134 msgid "Depleted Stock" @@ -9178,11 +9454,11 @@ msgstr "" #: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "生產中的工單" +msgstr "" #: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "逾期的生產工單" +msgstr "" #: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" @@ -9412,11 +9688,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9566,7 +9837,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -9587,7 +9858,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10043,7 +10314,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10123,7 +10394,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10252,7 +10523,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -10621,7 +10892,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -10641,26 +10912,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -10692,7 +10963,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -10704,364 +10975,364 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 msgid "Remove stock allocation" msgstr "" @@ -11426,10 +11697,6 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" @@ -11870,6 +12137,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12342,7 +12613,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12507,7 +12778,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12523,7 +12794,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -12735,7 +13006,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13164,10 +13435,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" @@ -13316,7 +13583,7 @@ msgstr "" #: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "每頁行數" +msgstr "" #: templates/js/translated/tables.js:537 msgid "Showing all rows" @@ -13324,7 +13591,7 @@ msgstr "" #: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "顯示" +msgstr "" #: templates/js/translated/tables.js:539 msgid "to" @@ -13462,10 +13729,15 @@ msgstr "" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +msgid "\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -13544,27 +13816,27 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:248 +#: users/admin.py:249 msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "" @@ -13608,35 +13880,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po b/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po index bd21bc3c9e..19cd1826b8 100644 --- a/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-16 11:14+0000\n" +"POT-Creation-Date: 2024-02-15 00:38+0000\n" "PO-Revision-Date: 2023-02-28 22:38\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:197 msgid "API endpoint not found" msgstr "未找到 API 端点" -#: InvenTree/api.py:417 +#: InvenTree/api.py:461 msgid "User does not have permission to view this model" msgstr "" @@ -48,7 +48,7 @@ msgstr "提供的数量无效" msgid "Invalid quantity supplied ({exc})" msgstr "提供的数量无效" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "在管理面板中可以找到错误详细信息" @@ -56,18 +56,18 @@ msgstr "在管理面板中可以找到错误详细信息" msgid "Enter date" msgstr "输入日期" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 -#: company/models.py:826 company/templates/company/sidebar.html:37 -#: order/models.py:1261 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 +#: company/models.py:830 company/templates/company/sidebar.html:37 +#: order/models.py:1266 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3148 part/templates/part/part_sidebar.html:63 +#: part/models.py:3160 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:226 stock/models.py:2263 stock/models.py:2367 +#: stock/serializers.py:427 stock/serializers.py:580 stock/serializers.py:676 +#: stock/serializers.py:726 stock/serializers.py:1022 stock/serializers.py:1111 +#: stock/serializers.py:1276 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -128,159 +128,299 @@ msgstr "所提供的主要电子邮件地址无效。" msgid "The provided email domain is not approved." msgstr "提供的电子邮件域未被核准。" -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:395 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:505 order/models.py:526 order/models.py:728 msgid "Invalid quantity provided" msgstr "提供的数量无效" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:513 msgid "Empty serial number string" msgstr "空序列号字符串" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:542 msgid "Duplicate serial" msgstr "重复的序列号" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:574 InvenTree/helpers.py:617 #, fuzzy, python-brace-format #| msgid "Invalid group range: {g}" msgid "Invalid group range: {group}" msgstr "无效的组范围: {g}" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:605 #, fuzzy, python-brace-format #| msgid "Group range {g} exceeds allowed quantity ({q})" msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "组 {g} 超出了允许的数量 ({q})" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:635 InvenTree/helpers.py:642 InvenTree/helpers.py:661 #, fuzzy, python-brace-format #| msgid "Invalid group sequence: {g}" msgid "Invalid group sequence: {group}" msgstr "无效的组序列: {g}" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:671 msgid "No serial numbers found" msgstr "未找到序列号" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:676 #, fuzzy #| msgid "Number of unique serial numbers ({s}) must match quantity ({q})" msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "唯一序列号 ({s}) 必须匹配数量 ({q})" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:794 msgid "Remove HTML tags from this value" msgstr "从这个值中删除 HTML 标签" -#: InvenTree/helpers_model.py:138 +#: InvenTree/helpers_model.py:150 msgid "Connection error" msgstr "连接错误" -#: InvenTree/helpers_model.py:143 InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 msgid "Server responded with invalid status code" msgstr "服务器响应状态码无效" -#: InvenTree/helpers_model.py:146 +#: InvenTree/helpers_model.py:158 msgid "Exception occurred" msgstr "发生异常" -#: InvenTree/helpers_model.py:156 +#: InvenTree/helpers_model.py:168 msgid "Server responded with invalid Content-Length value" msgstr "服务器响应的内容长度值无效" -#: InvenTree/helpers_model.py:159 +#: InvenTree/helpers_model.py:171 msgid "Image size is too large" msgstr "图片尺寸过大" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:183 msgid "Image download exceeded maximum size" msgstr "图像下载超过最大尺寸" -#: InvenTree/helpers_model.py:176 +#: InvenTree/helpers_model.py:188 msgid "Remote server returned empty response" msgstr "远程服务器返回了空响应" -#: InvenTree/helpers_model.py:184 +#: InvenTree/helpers_model.py:196 msgid "Supplied URL is not a valid image file" msgstr "提供的 URL 不是一个有效的图片文件" -#: InvenTree/magic_login.py:27 -#, python-brace-format -msgid "[{site.name}] Log in to the app" +#: InvenTree/locales.py:16 +#, fuzzy +#| msgid "Hungarian" +msgid "Bulgarian" +msgstr "匈牙利语" + +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "捷克语" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "丹麦语" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "德语" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "希腊语" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "英语" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "西班牙语" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "西班牙语(墨西哥)" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "波斯语" + +#: InvenTree/locales.py:25 +#, fuzzy +#| msgid "Danish" +msgid "Finnish" +msgstr "丹麦语" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "法语" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "希伯来语" + +#: InvenTree/locales.py:28 +msgid "Hindi" msgstr "" -#: InvenTree/magic_login.py:37 company/models.py:134 +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "匈牙利语" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "意大利语" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "日语" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "韩语" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "荷兰语" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "挪威语" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "波兰语" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "葡萄牙语" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "葡萄牙语 (巴西)" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "俄语" + +#: InvenTree/locales.py:39 +#, fuzzy +#| msgid "Slovenian" +msgid "Slovak" +msgstr "斯洛文尼亚" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "斯洛文尼亚" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "瑞典语" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "泰语" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "土耳其语" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "越南语" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:131 #: company/templates/company/company_base.html:132 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" msgstr "电子邮件" -#: InvenTree/models.py:83 +#: InvenTree/models.py:107 +#, fuzzy +#| msgid "Error reading file (invalid format)" +msgid "Error running plugin validation" +msgstr "读取文件时发生错误 (无效编码)" + +#: InvenTree/models.py:162 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:89 +#: InvenTree/models.py:168 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:90 +#: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:399 msgid "Improperly formatted pattern" msgstr "格式不正确" -#: InvenTree/models.py:327 +#: InvenTree/models.py:406 msgid "Unknown format key specified" msgstr "指定了未知格式密钥" -#: InvenTree/models.py:333 +#: InvenTree/models.py:412 msgid "Missing required format key" msgstr "缺少必需的格式密钥" -#: InvenTree/models.py:344 +#: InvenTree/models.py:423 msgid "Reference field cannot be empty" msgstr "引用字段不能为空" -#: InvenTree/models.py:352 +#: InvenTree/models.py:431 msgid "Reference must match required pattern" msgstr "引用必须匹配所需的图案" -#: InvenTree/models.py:384 +#: InvenTree/models.py:463 msgid "Reference number is too large" msgstr "参考编号过大" -#: InvenTree/models.py:466 +#: InvenTree/models.py:537 msgid "Missing file" msgstr "缺少文件" -#: InvenTree/models.py:467 +#: InvenTree/models.py:538 msgid "Missing external link" msgstr "缺少外部链接" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:559 stock/models.py:2362 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "附件" -#: InvenTree/models.py:489 +#: InvenTree/models.py:560 msgid "Select file to attach" msgstr "选择附件" -#: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 -#: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 -#: part/admin.py:55 part/models.py:902 +#: InvenTree/models.py:568 common/models.py:2912 company/models.py:144 +#: company/models.py:449 company/models.py:506 company/models.py:813 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 +#: part/admin.py:55 part/models.py:914 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:223 templates/js/translated/company.js:1309 +#: stock/admin.py:225 templates/js/translated/company.js:1309 #: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 #: templates/js/translated/part.js:2456 #: templates/js/translated/purchase_order.js:2037 @@ -291,71 +431,72 @@ msgstr "选择附件" msgid "Link" msgstr "链接" -#: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: InvenTree/models.py:569 build/models.py:306 part/models.py:915 +#: stock/models.py:817 msgid "Link to external URL" msgstr "链接到外部 URL" -#: InvenTree/models.py:504 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "注释" -#: InvenTree/models.py:505 +#: InvenTree/models.py:576 msgid "File comment" msgstr "文件注释" -#: InvenTree/models.py:513 InvenTree/models.py:514 common/models.py:2338 -#: common/models.py:2339 common/models.py:2563 common/models.py:2564 -#: common/models.py:2809 common/models.py:2810 part/models.py:3158 -#: part/models.py:3245 part/models.py:3338 part/models.py:3366 -#: plugin/models.py:234 plugin/models.py:235 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2388 +#: common/models.py:2389 common/models.py:2613 common/models.py:2614 +#: common/models.py:2859 common/models.py:2860 part/models.py:3170 +#: part/models.py:3257 part/models.py:3350 part/models.py:3378 +#: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 #: templates/js/translated/stock.js:3007 users/models.py:100 msgid "User" msgstr "用户" -#: InvenTree/models.py:518 +#: InvenTree/models.py:589 msgid "upload date" msgstr "上传日期" -#: InvenTree/models.py:540 +#: InvenTree/models.py:611 msgid "Filename must not be empty" msgstr "文件名不能为空!" -#: InvenTree/models.py:551 +#: InvenTree/models.py:622 msgid "Invalid attachment directory" msgstr "非法的附件目录" -#: InvenTree/models.py:581 +#: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "文件名包含非法字符 '{c}'" -#: InvenTree/models.py:584 +#: InvenTree/models.py:655 msgid "Filename missing extension" msgstr "缺少文件名扩展" -#: InvenTree/models.py:593 +#: InvenTree/models.py:664 msgid "Attachment with this filename already exists" msgstr "使用此文件名的附件已存在" -#: InvenTree/models.py:600 +#: InvenTree/models.py:671 msgid "Error renaming file" msgstr "重命名文件出错" -#: InvenTree/models.py:776 +#: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:793 +#: InvenTree/models.py:864 msgid "Invalid choice" msgstr "选择无效" -#: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: InvenTree/models.py:894 common/models.py:2600 common/models.py:2998 +#: common/serializers.py:370 company/models.py:605 label/models.py:115 +#: machine/models.py:24 part/models.py:850 part/models.py:3587 +#: plugin/models.py:41 report/models.py:174 stock/models.py:75 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -371,25 +512,25 @@ msgstr "选择无效" msgid "Name" msgstr "名称" -#: InvenTree/models.py:829 build/models.py:180 -#: build/templates/build/detail.html:24 common/models.py:133 -#: company/models.py:515 company/models.py:817 +#: InvenTree/models.py:900 build/models.py:179 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:514 company/models.py:821 #: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:122 -#: order/models.py:259 order/models.py:1294 part/admin.py:303 part/admin.py:413 -#: part/models.py:861 part/models.py:3590 part/templates/part/category.html:82 +#: order/models.py:264 order/models.py:1299 part/admin.py:303 part/admin.py:413 +#: part/models.py:873 part/models.py:3602 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:185 -#: report/models.py:615 report/models.py:660 +#: part/templates/part/part_scheduling.html:12 report/models.py:187 +#: report/models.py:622 report/models.py:667 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:81 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2135 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -408,282 +549,155 @@ msgstr "名称" msgid "Description" msgstr "描述信息" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:901 stock/models.py:82 msgid "Description (optional)" msgstr "描述 (可选)" -#: InvenTree/models.py:839 +#: InvenTree/models.py:910 msgid "parent" msgstr "上级项" -#: InvenTree/models.py:845 templates/js/translated/part.js:2794 +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2728 msgid "Path" msgstr "路径" -#: InvenTree/models.py:951 +#: InvenTree/models.py:1022 #, fuzzy #| msgid "Add transaction note (optional)" msgid "Markdown notes (optional)" msgstr "添加交易备注 (可选)" -#: InvenTree/models.py:980 +#: InvenTree/models.py:1051 msgid "Barcode Data" msgstr "条码数据" -#: InvenTree/models.py:981 +#: InvenTree/models.py:1052 msgid "Third party barcode data" msgstr "第三方条形码数据" -#: InvenTree/models.py:987 +#: InvenTree/models.py:1058 msgid "Barcode Hash" msgstr "条码哈希" -#: InvenTree/models.py:988 +#: InvenTree/models.py:1059 msgid "Unique hash of barcode data" msgstr "条码数据的唯一哈希" -#: InvenTree/models.py:1041 +#: InvenTree/models.py:1112 msgid "Existing barcode found" msgstr "发现现有条码" -#: InvenTree/models.py:1084 +#: InvenTree/models.py:1155 msgid "Server Error" msgstr "服务器错误" -#: InvenTree/models.py:1085 +#: InvenTree/models.py:1156 msgid "An error has been logged by the server." msgstr "服务器记录了一个错误。" -#: InvenTree/serializers.py:60 part/models.py:4099 +#: InvenTree/serializers.py:63 part/models.py:4115 msgid "Must be a valid number" msgstr "必须是有效数字" -#: InvenTree/serializers.py:97 company/models.py:180 -#: company/templates/company/company_base.html:106 part/models.py:2966 +#: InvenTree/serializers.py:100 company/models.py:177 +#: company/templates/company/company_base.html:106 part/models.py:2978 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "货币" -#: InvenTree/serializers.py:100 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:427 +#: InvenTree/serializers.py:437 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:439 +#: InvenTree/serializers.py:449 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:456 -#, python-brace-format -msgid "Welcome to {current_site.name}" +#: InvenTree/serializers.py:466 +msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:458 -#, python-brace-format -msgid "" -"Your account has been created.\n" -"\n" -"Please use the password reset function to get access (at https://{domain})." +#: InvenTree/serializers.py:468 +msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:520 +#: InvenTree/serializers.py:475 +#, fuzzy +#| msgid "About InvenTree" +msgid "Welcome to InvenTree" +msgstr "关于 InventTree" + +#: InvenTree/serializers.py:536 msgid "Filename" msgstr "文件名" -#: InvenTree/serializers.py:554 +#: InvenTree/serializers.py:570 msgid "Invalid value" msgstr "无效值" -#: InvenTree/serializers.py:574 +#: InvenTree/serializers.py:590 msgid "Data File" msgstr "数据文件" -#: InvenTree/serializers.py:575 +#: InvenTree/serializers.py:591 msgid "Select data file for upload" msgstr "选择要上传的文件" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:608 msgid "Unsupported file type" msgstr "不支持的文件类型" -#: InvenTree/serializers.py:598 +#: InvenTree/serializers.py:614 msgid "File is too large" msgstr "文件过大" -#: InvenTree/serializers.py:619 +#: InvenTree/serializers.py:635 msgid "No columns found in file" msgstr "在文件中没有找到列" -#: InvenTree/serializers.py:622 +#: InvenTree/serializers.py:638 msgid "No data rows found in file" msgstr "在文件中没有找到数据行" -#: InvenTree/serializers.py:735 +#: InvenTree/serializers.py:751 msgid "No data rows provided" msgstr "没有提供数据行" -#: InvenTree/serializers.py:738 +#: InvenTree/serializers.py:754 msgid "No data columns supplied" msgstr "没有提供数据列" -#: InvenTree/serializers.py:805 +#: InvenTree/serializers.py:821 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "缺少必需的列:'{name}'" -#: InvenTree/serializers.py:814 +#: InvenTree/serializers.py:830 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "复制列: '{col}'" -#: InvenTree/serializers.py:837 +#: InvenTree/serializers.py:853 #, fuzzy #| msgid "Part name" msgid "Remote Image" msgstr "商品名称" -#: InvenTree/serializers.py:838 +#: InvenTree/serializers.py:854 msgid "URL of remote image file" msgstr "远程图像文件的 URL" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:870 msgid "Downloading images from remote URL is not enabled" msgstr "未启用从远程 URL下载图像" -#: InvenTree/settings.py:837 -#, fuzzy -#| msgid "Hungarian" -msgid "Bulgarian" -msgstr "匈牙利语" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "捷克语" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "丹麦语" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "德语" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "希腊语" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "英语" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "西班牙语" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "西班牙语(墨西哥)" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "波斯语" - -#: InvenTree/settings.py:846 -#, fuzzy -#| msgid "Danish" -msgid "Finnish" -msgstr "丹麦语" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "法语" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "希伯来语" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "匈牙利语" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "意大利语" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "日语" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "韩语" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "荷兰语" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "挪威语" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "波兰语" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "葡萄牙语" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "葡萄牙语 (巴西)" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "俄语" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "斯洛文尼亚" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "瑞典语" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "泰语" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "土耳其语" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "越南语" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - -#: InvenTree/status.py:66 part/serializers.py:1082 +#: InvenTree/status.py:66 part/serializers.py:1090 msgid "Background worker check failed" msgstr "后台工作人员检查失败" @@ -732,7 +746,7 @@ msgstr "已退回" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:43 order/models.py:1531 +#: InvenTree/status_codes.py:43 order/models.py:1536 #: templates/js/translated/sales_order.js:1523 #: templates/js/translated/sales_order.js:1644 #: templates/js/translated/sales_order.js:1957 @@ -911,10 +925,6 @@ msgstr "已拒绝" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 #, fuzzy #| msgid "Invalid value" @@ -965,16 +975,16 @@ msgstr "关于 InventTree" msgid "Build must be cancelled before it can be deleted" msgstr "在删除前必须取消生产" -#: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: build/api.py:281 part/models.py:3993 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2519 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:3987 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2528 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -986,18 +996,18 @@ msgstr "可选项" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1739 +#: templates/js/translated/build.js:2624 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" msgstr "" -#: build/api.py:293 company/models.py:881 +#: build/api.py:293 company/models.py:885 #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2560 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -1007,16 +1017,16 @@ msgstr "" msgid "Available" msgstr "空闲" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:73 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "生产订单" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:74 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 @@ -1027,29 +1037,29 @@ msgstr "生产订单" msgid "Build Orders" msgstr "生产订单" -#: build/models.py:116 +#: build/models.py:115 msgid "Invalid choice for parent build" msgstr "上级生产选项无效" -#: build/models.py:127 +#: build/models.py:126 #, fuzzy #| msgid "Order cannot be cancelled" msgid "Build order part cannot be changed" msgstr "无法取消订单" -#: build/models.py:171 +#: build/models.py:170 msgid "Build Order Reference" msgstr "相关生产订单" -#: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 -#: part/models.py:3992 part/templates/part/upload_bom.html:54 +#: build/models.py:171 order/models.py:427 order/models.py:881 +#: order/models.py:1259 order/models.py:1963 part/admin.py:416 +#: part/models.py:4008 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2511 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1057,29 +1067,29 @@ msgstr "相关生产订单" msgid "Reference" msgstr "引用" -#: build/models.py:183 +#: build/models.py:182 #, fuzzy #| msgid "Brief description of the build" msgid "Brief description of the build (optional)" msgstr "生产的简短描述." -#: build/models.py:191 build/templates/build/build_base.html:183 +#: build/models.py:190 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "上级生产" -#: build/models.py:192 +#: build/models.py:191 msgid "BuildOrder to which this build is allocated" msgstr "此次生产匹配的订单" -#: build/models.py:197 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1030 -#: order/models.py:1379 order/models.py:1511 order/models.py:1512 -#: part/models.py:388 part/models.py:2977 part/models.py:3121 -#: part/models.py:3265 part/models.py:3288 part/models.py:3309 -#: part/models.py:3331 part/models.py:3438 part/models.py:3723 -#: part/models.py:3850 part/models.py:3943 part/models.py:4304 -#: part/serializers.py:1028 part/serializers.py:1591 +#: build/models.py:196 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1039 +#: order/models.py:1384 order/models.py:1516 order/models.py:1517 +#: part/models.py:387 part/models.py:2989 part/models.py:3133 +#: part/models.py:3277 part/models.py:3300 part/models.py:3321 +#: part/models.py:3343 part/models.py:3450 part/models.py:3735 +#: part/models.py:3866 part/models.py:3959 part/models.py:4320 +#: part/serializers.py:1036 part/serializers.py:1601 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1090,7 +1100,7 @@ msgstr "此次生产匹配的订单" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:200 stock/serializers.py:610 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1098,8 +1108,8 @@ msgstr "此次生产匹配的订单" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1307 templates/js/translated/build.js:1738 +#: templates/js/translated/build.js:2158 templates/js/translated/build.js:2331 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1123,144 +1133,144 @@ msgstr "此次生产匹配的订单" msgid "Part" msgstr "商品" -#: build/models.py:205 +#: build/models.py:204 msgid "Select part to build" msgstr "选择要生产的商品" -#: build/models.py:210 +#: build/models.py:209 msgid "Sales Order Reference" msgstr "相关销售订单" -#: build/models.py:214 +#: build/models.py:213 msgid "SalesOrder to which this build is allocated" msgstr "此次生产匹配的销售订单" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:218 build/serializers.py:946 +#: templates/js/translated/build.js:1726 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "来源地点" -#: build/models.py:223 +#: build/models.py:222 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "此次生产从哪个仓储位置获取库存(留空即可从任何仓储位置取出)" -#: build/models.py:228 +#: build/models.py:227 msgid "Destination Location" msgstr "目标地点" -#: build/models.py:232 +#: build/models.py:231 msgid "Select location where the completed items will be stored" msgstr "选择已完成项目仓储地点" -#: build/models.py:236 +#: build/models.py:235 msgid "Build Quantity" msgstr "生产数量" -#: build/models.py:239 +#: build/models.py:238 msgid "Number of stock items to build" msgstr "要生产的项目数量" -#: build/models.py:243 +#: build/models.py:242 msgid "Completed items" msgstr "已完成项目" -#: build/models.py:245 +#: build/models.py:244 msgid "Number of stock items which have been completed" msgstr "已完成的库存项目数量" -#: build/models.py:249 +#: build/models.py:248 msgid "Build Status" msgstr "生产状态" -#: build/models.py:253 +#: build/models.py:252 msgid "Build status code" msgstr "生产状态代码" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:261 build/serializers.py:279 order/serializers.py:527 +#: stock/models.py:821 stock/serializers.py:1241 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "批量代码" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:265 build/serializers.py:280 msgid "Batch code for this build output" msgstr "此生产产出的批量代码" -#: build/models.py:269 order/models.py:286 part/models.py:1062 +#: build/models.py:268 order/models.py:291 part/models.py:1074 #: part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:339 #: templates/js/translated/sales_order.js:827 msgid "Creation Date" msgstr "创建日期" -#: build/models.py:273 +#: build/models.py:272 msgid "Target completion date" msgstr "预计完成日期" -#: build/models.py:274 +#: build/models.py:273 msgid "Target date for build completion. Build will be overdue after this date." msgstr "生产完成的目标日期。生产将在此日期之后逾期。" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:276 order/models.py:485 order/models.py:2008 +#: templates/js/translated/build.js:2243 msgid "Completion Date" msgstr "完成日期:" -#: build/models.py:283 +#: build/models.py:282 msgid "completed by" msgstr "完成人" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:290 templates/js/translated/build.js:2203 msgid "Issued by" msgstr "发布者" -#: build/models.py:292 +#: build/models.py:291 msgid "User who issued this build order" msgstr "发布此生产订单的用户" -#: build/models.py:300 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:142 -#: order/models.py:304 order/templates/order/order_base.html:217 +#: build/models.py:299 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:309 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1079 +#: order/templates/order/sales_order_base.html:228 part/models.py:1091 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2215 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "责任人" -#: build/models.py:301 +#: build/models.py:300 msgid "User or group responsible for this build order" msgstr "构建此订单的用户或组" -#: build/models.py:306 build/templates/build/detail.html:108 +#: build/models.py:305 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:194 #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:817 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" msgstr "外部链接" -#: build/models.py:311 +#: build/models.py:310 msgid "Build Priority" msgstr "创建优先级" -#: build/models.py:314 +#: build/models.py:313 msgid "Priority of this build order" msgstr "此构建订单的优先级" -#: build/models.py:321 common/models.py:126 order/admin.py:18 -#: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: build/models.py:320 common/models.py:129 order/admin.py:18 +#: order/models.py:273 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2140 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1271,58 +1281,58 @@ msgstr "此构建订单的优先级" msgid "Project Code" msgstr "商品二维码" -#: build/models.py:322 +#: build/models.py:321 #, fuzzy #| msgid "Priority of this build order" msgid "Project code for this build order" msgstr "此构建订单的优先级" -#: build/models.py:557 +#: build/models.py:556 #, python-brace-format msgid "Build order {build} has been completed" msgstr "生产订单 {build} 已完成" -#: build/models.py:563 +#: build/models.py:562 msgid "A build order has been completed" msgstr "生产订单已完成" -#: build/models.py:781 build/models.py:856 +#: build/models.py:780 build/models.py:855 msgid "No build output specified" msgstr "未指定生产产出" -#: build/models.py:784 +#: build/models.py:783 msgid "Build output is already completed" msgstr "生产产出已完成" -#: build/models.py:787 +#: build/models.py:786 msgid "Build output does not match Build Order" msgstr "生产产出与订单不匹配" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 -#: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: build/models.py:859 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:523 order/serializers.py:395 +#: order/serializers.py:522 part/serializers.py:1393 part/serializers.py:1759 +#: stock/models.py:662 stock/models.py:1472 stock/serializers.py:398 msgid "Quantity must be greater than zero" msgstr "数量必须大于0" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:864 build/serializers.py:227 #, fuzzy #| msgid "Quantity must be greater than zero" msgid "Quantity cannot be greater than the output quantity" msgstr "数量必须大于0" -#: build/models.py:1279 +#: build/models.py:1278 #, fuzzy #| msgid "Build Notes" msgid "Build object" msgstr "生产备注" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: build/models.py:1292 build/models.py:1550 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2410 +#: order/models.py:1242 order/models.py:1886 order/serializers.py:1284 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 -#: part/forms.py:48 part/models.py:3135 part/models.py:3965 +#: part/forms.py:48 part/models.py:3147 part/models.py:3981 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1332,15 +1342,15 @@ msgstr "生产备注" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:160 stock/serializers.py:389 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:1741 templates/js/translated/build.js:2353 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1364,45 +1374,45 @@ msgstr "生产备注" msgid "Quantity" msgstr "数量" -#: build/models.py:1294 +#: build/models.py:1293 #, fuzzy #| msgid "Stock required for build order" msgid "Required quantity for build order" msgstr "生产订单所需的库存" -#: build/models.py:1374 +#: build/models.py:1373 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "生产项必须指定生产产出,因为主部件已经被标记为可追踪的" -#: build/models.py:1383 +#: build/models.py:1382 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1392 order/models.py:1837 msgid "Stock item is over-allocated" msgstr "库存物品分配过度!" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1398 order/models.py:1840 msgid "Allocation quantity must be greater than zero" msgstr "分配数量必须大于0" -#: build/models.py:1405 +#: build/models.py:1404 msgid "Quantity must be 1 for serialized stock" msgstr "序列化库存的数量必须是 1" -#: build/models.py:1466 +#: build/models.py:1465 #, fuzzy #| msgid "Selected stock item not found in BOM" msgid "Selected stock item does not match BOM line" msgstr "在BOM中找不到选定的库存项" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1537 build/serializers.py:799 order/serializers.py:1128 +#: order/serializers.py:1149 stock/serializers.py:492 stock/serializers.py:960 +#: stock/serializers.py:1072 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1740 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1414,89 +1424,89 @@ msgstr "在BOM中找不到选定的库存项" msgid "Stock Item" msgstr "库存项" -#: build/models.py:1539 +#: build/models.py:1538 msgid "Source stock item" msgstr "源库存项" -#: build/models.py:1552 +#: build/models.py:1551 msgid "Stock quantity to allocate to build" msgstr "分配到生产的数量" -#: build/models.py:1560 +#: build/models.py:1559 msgid "Install into" msgstr "安装到" -#: build/models.py:1561 +#: build/models.py:1560 msgid "Destination stock item" msgstr "目标库存项" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1317 msgid "Build Output" msgstr "生产产出" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "生产产出与对应生产不匹配" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "产出部件与生产订单部件不匹配" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "此生产产出已经完成" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "生产产出未被完成分配" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "输入生产产出数量" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "对于可追踪的部件,需要整数型数值" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "需要整数型数值,因为BOM包含可追踪的部件" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:535 order/serializers.py:1288 +#: stock/serializers.py:409 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "序列号" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "输入生产产出的序列号" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "自动分配序列号" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "自动为所需项分配对应的序列号" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "以下序列号已存在或无效" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "必须提供生产产出列表" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 -#: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:511 +#: order/serializers.py:619 order/serializers.py:1624 part/serializers.py:1056 +#: stock/serializers.py:420 stock/serializers.py:575 stock/serializers.py:671 +#: stock/serializers.py:1104 stock/serializers.py:1360 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2368 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1509,38 +1519,38 @@ msgstr "必须提供生产产出列表" msgid "Location" msgstr "地点" -#: build/serializers.py:422 +#: build/serializers.py:426 #, fuzzy #| msgid "Stock item created" msgid "Stock location for scrapped outputs" msgstr "库存项已创建" -#: build/serializers.py:428 +#: build/serializers.py:432 #, fuzzy #| msgid "Stock Locations" msgid "Discard Allocations" msgstr "仓储地点" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 #, fuzzy #| msgid "Location for completed build outputs" msgid "Reason for scrapping build output(s)" msgstr "已完成生产产出的仓储地点" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "已完成生产产出的仓储地点" -#: build/serializers.py:500 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: build/serializers.py:504 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:905 +#: order/models.py:1987 order/serializers.py:543 stock/admin.py:165 +#: stock/serializers.py:722 stock/serializers.py:1248 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2187 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1550,163 +1560,192 @@ msgstr "已完成生产产出的仓储地点" msgid "Status" msgstr "状态" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "接受不完整的分配" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "如果库存尚未完成分配,完成产出" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "移除已分配的库存" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "减去已经分配至此生产的库存" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "移除未完成的产出" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "删除所有未完成的生产产出" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "接受此构建订单所消耗的内容" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "在完成此构建订单前取消分配" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "超出分配的库存" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "你想如何处理分配给构建订单的额外库存物品" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "一些库存项已被过度分配" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "接受未分配的" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "接受库存项未被完成分配至此生产订单" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "所需库存尚未完全分配" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:280 order/serializers.py:1191 msgid "Accept Incomplete" msgstr "接受未完成" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "接受所需的生产产出未完成" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "所需生产数量尚未完成" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "生产订单有未完成的产出" -#: build/serializers.py:718 +#: build/serializers.py:722 #, fuzzy #| msgid "Build actions" msgid "Build Line" msgstr "生产操作" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "生产产出" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "生产产出必须指向相同的生产" -#: build/serializers.py:772 +#: build/serializers.py:776 #, fuzzy #| msgid "Delete parameters" msgid "Build Line Item" msgstr "删除参数" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part 必须与生产订单指向相同的部件" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:973 msgid "Item must be in stock" msgstr "项目必须在库存中" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1182 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "可用量 ({q}) 超出了限制" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "对于被追踪的部件的分配,必须指定生产产出" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "对于未被追踪的部件,无法指定生产产出" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1434 msgid "Allocation items must be provided" msgstr "必须提供分配的项" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "部件来源的仓储地点(留空则可来源于任何仓储地点)" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "排除地点" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "从该选定的仓储地点排除库存项" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "可互换的库存" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "多处地点的库存项可以互换使用" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "可替换的库存" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "允许分配可替换的部件" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "可选项目" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "分配可选的BOM项目来建立订单" +#: build/serializers.py:1078 part/models.py:3876 part/models.py:4312 +#: stock/api.py:717 +msgid "BOM Item" +msgstr "BOM项" + +#: build/serializers.py:1087 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1092 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:1411 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2612 +#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1097 part/serializers.py:1413 +#: templates/js/translated/build.js:2616 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "正在生产" + +#: build/serializers.py:1102 part/bom.py:172 part/serializers.py:1424 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "可用库存" + #: build/tasks.py:149 msgid "Stock required for build order" msgstr "生产订单所需的库存" @@ -1834,12 +1873,12 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "库存尚未被完全分配到此构建订单" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:279 -#: order/models.py:1272 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:284 +#: order/models.py:1277 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2235 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1872,8 +1911,8 @@ msgid "Completed Outputs" msgstr "已完成输出" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1508 +#: order/models.py:1622 order/models.py:1774 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1895,7 +1934,7 @@ msgid "Issued By" msgstr "发布者" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2152 msgid "Priority" msgstr "优先级" @@ -1927,7 +1966,7 @@ msgstr "库存来源" msgid "Stock can be taken from any available location." msgstr "库存可以从任何可用的地点获得。" -#: build/templates/build/detail.html:49 order/models.py:1408 +#: build/templates/build/detail.html:49 order/models.py:1413 #: templates/js/translated/purchase_order.js:2186 msgid "Destination" msgstr "目的地" @@ -1940,9 +1979,9 @@ msgstr "目标位置未指定" msgid "Allocated Parts" msgstr "已分配的部件" -#: build/templates/build/detail.html:80 stock/admin.py:161 +#: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1375 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1956,7 +1995,7 @@ msgstr "批量" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2195 msgid "Created" msgstr "已创建" @@ -2061,11 +2100,11 @@ msgstr "附件" msgid "Build Notes" msgstr "生产备注" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "分配完成" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 #, fuzzy #| msgid "Required stock has not been fully allocated" msgid "All lines have been fully allocated" @@ -2122,1456 +2161,1477 @@ msgstr "{name.title()} 文件" msgid "Select {name} file to upload" msgstr "选择 {name} 文件上传" -#: common/models.py:72 +#: common/models.py:71 msgid "Updated" msgstr "已更新" -#: common/models.py:73 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "最后一次更新时间" -#: common/models.py:127 +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 msgid "Unique project code" msgstr "" -#: common/models.py:134 +#: common/models.py:137 #, fuzzy #| msgid "Part description" msgid "Project description" msgstr "商品描述" -#: common/models.py:143 +#: common/models.py:146 #, fuzzy #| msgid "User or group responsible for this order" msgid "User or group responsible for this project" msgstr "负责此订单的用户或群组" -#: common/models.py:714 +#: common/models.py:735 msgid "Settings key (must be unique - case insensitive)" msgstr "设置键值(必须是唯一的 - 大小写不敏感)" -#: common/models.py:718 +#: common/models.py:739 msgid "Settings value" msgstr "设定值" -#: common/models.py:770 +#: common/models.py:791 msgid "Chosen value is not a valid option" msgstr "选择的值不是一个有效的选项" -#: common/models.py:786 +#: common/models.py:807 msgid "Value must be a boolean value" msgstr "值必须是布尔量" -#: common/models.py:794 +#: common/models.py:815 msgid "Value must be an integer value" msgstr "值必须为整数" -#: common/models.py:831 +#: common/models.py:852 msgid "Key string must be unique" msgstr "关键字必须是唯一的" -#: common/models.py:1063 +#: common/models.py:1084 msgid "No group" msgstr "无群组" -#: common/models.py:1088 +#: common/models.py:1127 msgid "An empty domain is not allowed." msgstr "不允许空域。" -#: common/models.py:1090 +#: common/models.py:1129 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "无效的域名: {domain}" -#: common/models.py:1102 +#: common/models.py:1141 #, fuzzy #| msgid "Subcategories" msgid "No plugin" msgstr "子类别" -#: common/models.py:1176 +#: common/models.py:1215 msgid "Restart required" msgstr "需要重启" -#: common/models.py:1178 +#: common/models.py:1217 msgid "A setting has been changed which requires a server restart" msgstr "设置已更改,需要服务器重启" -#: common/models.py:1185 +#: common/models.py:1224 #, fuzzy #| msgid "Printing Actions" msgid "Pending migrations" msgstr "打印操作" -#: common/models.py:1186 +#: common/models.py:1225 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1191 +#: common/models.py:1230 msgid "Server Instance Name" msgstr "服务器实例名称" -#: common/models.py:1193 +#: common/models.py:1232 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1197 +#: common/models.py:1236 msgid "Use instance name" msgstr "" -#: common/models.py:1198 +#: common/models.py:1237 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1203 +#: common/models.py:1242 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1204 +#: common/models.py:1243 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1209 company/models.py:109 company/models.py:110 +#: common/models.py:1248 company/models.py:106 company/models.py:107 msgid "Company name" msgstr "公司名称" -#: common/models.py:1210 +#: common/models.py:1249 msgid "Internal company name" msgstr "内部公司名称" -#: common/models.py:1214 +#: common/models.py:1253 msgid "Base URL" msgstr "" -#: common/models.py:1215 +#: common/models.py:1254 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1221 +#: common/models.py:1260 msgid "Default Currency" msgstr "" -#: common/models.py:1222 +#: common/models.py:1261 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1228 +#: common/models.py:1267 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1230 +#: common/models.py:1269 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1233 common/models.py:1289 common/models.py:1302 -#: common/models.py:1310 common/models.py:1319 common/models.py:1328 -#: common/models.py:1530 common/models.py:1552 common/models.py:1661 -#: common/models.py:1918 +#: common/models.py:1272 common/models.py:1328 common/models.py:1341 +#: common/models.py:1349 common/models.py:1358 common/models.py:1367 +#: common/models.py:1569 common/models.py:1591 common/models.py:1700 +#: common/models.py:1963 msgid "days" msgstr "天" -#: common/models.py:1237 +#: common/models.py:1276 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1238 +#: common/models.py:1277 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1243 +#: common/models.py:1282 msgid "Download from URL" msgstr "" -#: common/models.py:1245 +#: common/models.py:1284 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1251 +#: common/models.py:1290 msgid "Download Size Limit" msgstr "" -#: common/models.py:1252 +#: common/models.py:1291 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1258 +#: common/models.py:1297 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1260 +#: common/models.py:1299 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1265 +#: common/models.py:1304 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1266 +#: common/models.py:1305 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1271 +#: common/models.py:1310 msgid "Require confirm" msgstr "" -#: common/models.py:1272 +#: common/models.py:1311 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1277 +#: common/models.py:1316 msgid "Tree Depth" msgstr "" -#: common/models.py:1279 +#: common/models.py:1318 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1285 +#: common/models.py:1324 msgid "Update Check Interval" msgstr "" -#: common/models.py:1286 +#: common/models.py:1325 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1292 +#: common/models.py:1331 msgid "Automatic Backup" msgstr "" -#: common/models.py:1293 +#: common/models.py:1332 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1298 +#: common/models.py:1337 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1299 +#: common/models.py:1338 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1305 +#: common/models.py:1344 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1307 +#: common/models.py:1346 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1314 +#: common/models.py:1353 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1316 +#: common/models.py:1355 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1323 +#: common/models.py:1362 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1325 +#: common/models.py:1364 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1332 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1371 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1333 +#: common/models.py:1372 #, fuzzy #| msgid "Enable barcode scanner support" msgid "Enable barcode scanner support in the web interface" msgstr "启用条形码扫描支持" -#: common/models.py:1338 +#: common/models.py:1377 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1339 +#: common/models.py:1378 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1345 +#: common/models.py:1384 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1346 +#: common/models.py:1385 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1351 +#: common/models.py:1390 #, fuzzy #| msgid "Part description" msgid "Part Revisions" msgstr "商品描述" -#: common/models.py:1352 +#: common/models.py:1391 #, fuzzy #| msgid "Enable internal prices for parts" msgid "Enable revision field for Part" msgstr "启用内部商品价格" -#: common/models.py:1357 +#: common/models.py:1396 msgid "IPN Regex" msgstr "" -#: common/models.py:1358 +#: common/models.py:1397 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1361 +#: common/models.py:1400 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1362 +#: common/models.py:1401 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1367 +#: common/models.py:1406 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1368 +#: common/models.py:1407 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1373 +#: common/models.py:1412 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1374 +#: common/models.py:1413 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1379 +#: common/models.py:1418 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1380 +#: common/models.py:1419 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1385 +#: common/models.py:1424 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1386 +#: common/models.py:1425 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1391 +#: common/models.py:1430 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1392 +#: common/models.py:1431 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1397 part/admin.py:108 part/models.py:3731 -#: report/models.py:178 templates/js/translated/table_filters.js:139 +#: common/models.py:1436 part/admin.py:108 part/models.py:3743 +#: report/models.py:180 templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "模板" -#: common/models.py:1398 +#: common/models.py:1437 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1403 part/admin.py:91 part/admin.py:430 part/models.py:999 +#: common/models.py:1442 part/admin.py:91 part/admin.py:430 part/models.py:1011 #: templates/js/translated/bom.js:1633 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "组装" -#: common/models.py:1404 +#: common/models.py:1443 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1409 part/admin.py:95 part/models.py:1005 +#: common/models.py:1448 part/admin.py:95 part/models.py:1017 #: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "组件" -#: common/models.py:1410 +#: common/models.py:1449 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1415 part/admin.py:100 part/models.py:1017 +#: common/models.py:1454 part/admin.py:100 part/models.py:1029 msgid "Purchaseable" msgstr "可购买" -#: common/models.py:1416 +#: common/models.py:1455 msgid "Parts are purchaseable by default" msgstr "商品默认可购买" -#: common/models.py:1421 part/admin.py:104 part/models.py:1023 +#: common/models.py:1460 part/admin.py:104 part/models.py:1035 #: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "可销售" -#: common/models.py:1422 +#: common/models.py:1461 msgid "Parts are salable by default" msgstr "商品默认可销售" -#: common/models.py:1427 part/admin.py:113 part/models.py:1011 +#: common/models.py:1466 part/admin.py:113 part/models.py:1023 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "可追踪" -#: common/models.py:1428 +#: common/models.py:1467 msgid "Parts are trackable by default" msgstr "商品默认可跟踪" -#: common/models.py:1433 part/admin.py:117 part/models.py:1033 +#: common/models.py:1472 part/admin.py:117 part/models.py:1045 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "虚拟" -#: common/models.py:1434 +#: common/models.py:1473 msgid "Parts are virtual by default" msgstr "商品默认是虚拟的" -#: common/models.py:1439 +#: common/models.py:1478 msgid "Show Import in Views" msgstr "视图中显示导入" -#: common/models.py:1440 +#: common/models.py:1479 msgid "Display the import wizard in some part views" msgstr "在一些商品视图中显示导入向导" -#: common/models.py:1445 +#: common/models.py:1484 msgid "Show related parts" msgstr "显示相关商品" -#: common/models.py:1446 +#: common/models.py:1485 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1451 +#: common/models.py:1490 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1452 +#: common/models.py:1491 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1457 templates/js/translated/part.js:107 +#: common/models.py:1496 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1459 +#: common/models.py:1498 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1465 +#: common/models.py:1504 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1466 +#: common/models.py:1505 msgid "Format to display the part name" msgstr "" -#: common/models.py:1472 +#: common/models.py:1511 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1473 +#: common/models.py:1512 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1477 +#: common/models.py:1516 #, fuzzy #| msgid "Parameter units" msgid "Enforce Parameter Units" msgstr "参数单位" -#: common/models.py:1479 +#: common/models.py:1518 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1485 +#: common/models.py:1524 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1487 +#: common/models.py:1526 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1493 +#: common/models.py:1532 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1495 +#: common/models.py:1534 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1501 +#: common/models.py:1540 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1503 +#: common/models.py:1542 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1509 +#: common/models.py:1548 msgid "Purchase History Override" msgstr "" -#: common/models.py:1511 +#: common/models.py:1550 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1517 +#: common/models.py:1556 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1519 +#: common/models.py:1558 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1525 +#: common/models.py:1564 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1527 +#: common/models.py:1566 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1534 +#: common/models.py:1573 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1535 +#: common/models.py:1574 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1540 +#: common/models.py:1579 msgid "Active Variants Only" msgstr "" -#: common/models.py:1542 +#: common/models.py:1581 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1548 +#: common/models.py:1587 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1550 +#: common/models.py:1589 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1557 +#: common/models.py:1596 msgid "Internal Prices" msgstr "内部价格" -#: common/models.py:1558 +#: common/models.py:1597 msgid "Enable internal prices for parts" msgstr "启用内部商品价格" -#: common/models.py:1563 +#: common/models.py:1602 msgid "Internal Price Override" msgstr "" -#: common/models.py:1565 +#: common/models.py:1604 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1571 +#: common/models.py:1610 msgid "Enable label printing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1611 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1577 +#: common/models.py:1616 msgid "Label Image DPI" msgstr "" -#: common/models.py:1579 +#: common/models.py:1618 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1585 +#: common/models.py:1624 msgid "Enable Reports" msgstr "" -#: common/models.py:1586 +#: common/models.py:1625 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1591 templates/stats.html:25 +#: common/models.py:1630 templates/stats.html:25 msgid "Debug Mode" msgstr "调试模式" -#: common/models.py:1592 +#: common/models.py:1631 msgid "Generate reports in debug mode (HTML output)" msgstr "在调试模式生成报告(HTML输出)" -#: common/models.py:1597 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:199 +#: common/models.py:1636 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:201 msgid "Page Size" msgstr "页面大小" -#: common/models.py:1598 +#: common/models.py:1637 msgid "Default page size for PDF reports" msgstr "PDF 报表默认页面大小" -#: common/models.py:1603 +#: common/models.py:1642 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1604 +#: common/models.py:1643 msgid "Enable generation of test reports" msgstr "启用生成测试报表" -#: common/models.py:1609 +#: common/models.py:1648 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1611 +#: common/models.py:1650 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1617 +#: common/models.py:1656 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1618 +#: common/models.py:1657 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1623 +#: common/models.py:1662 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1624 +#: common/models.py:1663 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1629 +#: common/models.py:1668 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1631 +#: common/models.py:1670 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1637 +#: common/models.py:1676 msgid "Batch Code Template" msgstr "" -#: common/models.py:1639 +#: common/models.py:1678 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1644 +#: common/models.py:1683 msgid "Stock Expiry" msgstr "库存到期" -#: common/models.py:1645 +#: common/models.py:1684 msgid "Enable stock expiry functionality" msgstr "启用库存到期功能" -#: common/models.py:1650 +#: common/models.py:1689 msgid "Sell Expired Stock" msgstr "销售过期库存" -#: common/models.py:1651 +#: common/models.py:1690 msgid "Allow sale of expired stock" msgstr "允许销售过期库存" -#: common/models.py:1656 +#: common/models.py:1695 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1658 +#: common/models.py:1697 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1665 +#: common/models.py:1704 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1666 +#: common/models.py:1705 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1671 +#: common/models.py:1710 msgid "Stock Ownership Control" msgstr "库存所有权控制" -#: common/models.py:1672 +#: common/models.py:1711 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1677 +#: common/models.py:1716 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1678 +#: common/models.py:1717 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1682 +#: common/models.py:1721 #, fuzzy #| msgid "Select Stock Items" msgid "Show Installed Stock Items" msgstr "选择库存项" -#: common/models.py:1683 +#: common/models.py:1722 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1688 +#: common/models.py:1727 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1690 +#: common/models.py:1729 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1696 +#: common/models.py:1735 #, fuzzy #| msgid "Sales Orders" msgid "Enable Return Orders" msgstr "销售订单" -#: common/models.py:1697 +#: common/models.py:1736 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1702 +#: common/models.py:1741 #, fuzzy #| msgid "Build Order Reference" msgid "Return Order Reference Pattern" msgstr "相关生产订单" -#: common/models.py:1704 +#: common/models.py:1743 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1710 +#: common/models.py:1749 #, fuzzy #| msgid "Complete Build Order" msgid "Edit Completed Return Orders" msgstr "生产订单完成" -#: common/models.py:1712 +#: common/models.py:1751 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1718 +#: common/models.py:1757 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1720 +#: common/models.py:1759 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1726 +#: common/models.py:1765 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1727 +#: common/models.py:1766 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1732 +#: common/models.py:1771 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1734 +#: common/models.py:1773 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1740 +#: common/models.py:1779 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1742 +#: common/models.py:1781 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1748 +#: common/models.py:1787 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1789 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1756 +#: common/models.py:1795 #, fuzzy #| msgid "Create Purchase Order" msgid "Auto Complete Purchase Orders" msgstr "创建采购订单" -#: common/models.py:1758 +#: common/models.py:1797 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1765 +#: common/models.py:1804 msgid "Enable password forgot" msgstr "" -#: common/models.py:1766 +#: common/models.py:1805 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1771 +#: common/models.py:1810 msgid "Enable registration" msgstr "" -#: common/models.py:1772 +#: common/models.py:1811 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1777 +#: common/models.py:1816 msgid "Enable SSO" msgstr "" -#: common/models.py:1778 +#: common/models.py:1817 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1783 +#: common/models.py:1822 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1785 +#: common/models.py:1824 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1791 +#: common/models.py:1830 msgid "Email required" msgstr "" -#: common/models.py:1792 +#: common/models.py:1831 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1797 +#: common/models.py:1836 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1799 +#: common/models.py:1838 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1805 +#: common/models.py:1844 msgid "Mail twice" msgstr "" -#: common/models.py:1806 +#: common/models.py:1845 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1811 +#: common/models.py:1850 msgid "Password twice" msgstr "" -#: common/models.py:1812 +#: common/models.py:1851 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1817 +#: common/models.py:1856 msgid "Allowed domains" msgstr "" -#: common/models.py:1819 +#: common/models.py:1858 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1825 +#: common/models.py:1864 msgid "Group on signup" msgstr "" -#: common/models.py:1826 +#: common/models.py:1865 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1831 +#: common/models.py:1870 msgid "Enforce MFA" msgstr "" -#: common/models.py:1832 +#: common/models.py:1871 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1837 +#: common/models.py:1876 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1839 +#: common/models.py:1878 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1848 +#: common/models.py:1886 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1887 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1893 msgid "Enable URL integration" msgstr "" -#: common/models.py:1849 +#: common/models.py:1894 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1855 +#: common/models.py:1900 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1856 +#: common/models.py:1901 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1862 +#: common/models.py:1907 msgid "Enable app integration" msgstr "" -#: common/models.py:1863 +#: common/models.py:1908 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1869 +#: common/models.py:1914 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1870 +#: common/models.py:1915 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1876 +#: common/models.py:1921 msgid "Enable event integration" msgstr "" -#: common/models.py:1877 +#: common/models.py:1922 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1883 +#: common/models.py:1928 #, fuzzy #| msgid "Sales Orders" msgid "Enable project codes" msgstr "销售订单" -#: common/models.py:1884 +#: common/models.py:1929 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1889 +#: common/models.py:1934 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1891 +#: common/models.py:1936 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1897 +#: common/models.py:1942 #, fuzzy #| msgid "Exclude Location" msgid "Exclude External Locations" msgstr "排除地点" -#: common/models.py:1899 +#: common/models.py:1944 #, fuzzy #| msgid "Exclude stock items from this selected location" msgid "Exclude stock items in external locations from stocktake calculations" msgstr "从该选定的仓储地点排除库存项" -#: common/models.py:1905 +#: common/models.py:1950 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1907 +#: common/models.py:1952 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1913 +#: common/models.py:1958 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1915 +#: common/models.py:1960 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1922 +#: common/models.py:1967 msgid "Display Users full names" msgstr "" -#: common/models.py:1923 +#: common/models.py:1968 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1935 common/models.py:2330 +#: common/models.py:1980 common/models.py:2380 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1976 +#: common/models.py:2021 #, fuzzy #| msgid "Build to allocate parts" msgid "Hide inactive parts" msgstr "生产以分配部件" -#: common/models.py:1978 +#: common/models.py:2023 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1984 +#: common/models.py:2029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1985 +#: common/models.py:2030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1990 +#: common/models.py:2035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1991 +#: common/models.py:2036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1996 +#: common/models.py:2041 msgid "Show latest parts" msgstr "显示最近商品" -#: common/models.py:1997 +#: common/models.py:2042 msgid "Show latest parts on the homepage" msgstr "在主页上显示最近商品" -#: common/models.py:2002 +#: common/models.py:2047 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2003 +#: common/models.py:2048 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2008 +#: common/models.py:2053 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2009 +#: common/models.py:2054 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2014 +#: common/models.py:2059 msgid "Show low stock" msgstr "" -#: common/models.py:2015 +#: common/models.py:2060 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2020 +#: common/models.py:2065 msgid "Show depleted stock" msgstr "" -#: common/models.py:2021 +#: common/models.py:2066 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2026 +#: common/models.py:2071 msgid "Show needed stock" msgstr "" -#: common/models.py:2027 +#: common/models.py:2072 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2032 +#: common/models.py:2077 msgid "Show expired stock" msgstr "" -#: common/models.py:2033 +#: common/models.py:2078 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2038 +#: common/models.py:2083 msgid "Show stale stock" msgstr "" -#: common/models.py:2039 +#: common/models.py:2084 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2044 +#: common/models.py:2089 msgid "Show pending builds" msgstr "" -#: common/models.py:2045 +#: common/models.py:2090 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2050 +#: common/models.py:2095 msgid "Show overdue builds" msgstr "显示逾期生产" -#: common/models.py:2051 +#: common/models.py:2096 msgid "Show overdue builds on the homepage" msgstr "在主页上显示逾期的生产" -#: common/models.py:2056 +#: common/models.py:2101 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2057 +#: common/models.py:2102 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2062 +#: common/models.py:2107 msgid "Show overdue POs" msgstr "" -#: common/models.py:2063 +#: common/models.py:2108 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2068 +#: common/models.py:2113 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2069 +#: common/models.py:2114 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2074 +#: common/models.py:2119 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2075 +#: common/models.py:2120 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2080 +#: common/models.py:2125 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2081 +#: common/models.py:2126 #, fuzzy #| msgid "Show latest parts on the homepage" msgid "Show pending SO shipments on the homepage" msgstr "在主页上显示最近商品" -#: common/models.py:2086 +#: common/models.py:2131 msgid "Show News" msgstr "" -#: common/models.py:2087 +#: common/models.py:2132 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2092 +#: common/models.py:2137 msgid "Inline label display" msgstr "内嵌标签显示" -#: common/models.py:2094 +#: common/models.py:2139 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载" -#: common/models.py:2100 +#: common/models.py:2145 msgid "Default label printer" msgstr "" -#: common/models.py:2102 +#: common/models.py:2147 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2108 +#: common/models.py:2153 msgid "Inline report display" msgstr "" -#: common/models.py:2110 +#: common/models.py:2155 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载" -#: common/models.py:2116 +#: common/models.py:2161 msgid "Search Parts" msgstr "" -#: common/models.py:2117 +#: common/models.py:2162 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2122 +#: common/models.py:2167 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2123 +#: common/models.py:2168 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2128 +#: common/models.py:2173 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2129 +#: common/models.py:2174 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2134 +#: common/models.py:2179 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2135 +#: common/models.py:2180 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2140 +#: common/models.py:2185 msgid "Search Categories" msgstr "" -#: common/models.py:2141 +#: common/models.py:2186 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2146 +#: common/models.py:2191 msgid "Search Stock" msgstr "" -#: common/models.py:2147 +#: common/models.py:2192 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2152 +#: common/models.py:2197 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2154 +#: common/models.py:2199 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2160 +#: common/models.py:2205 msgid "Search Locations" msgstr "" -#: common/models.py:2161 +#: common/models.py:2206 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2166 +#: common/models.py:2211 msgid "Search Companies" msgstr "" -#: common/models.py:2167 +#: common/models.py:2212 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2172 +#: common/models.py:2217 msgid "Search Build Orders" msgstr "" -#: common/models.py:2173 +#: common/models.py:2218 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2178 +#: common/models.py:2223 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2179 +#: common/models.py:2224 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2184 +#: common/models.py:2229 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2186 +#: common/models.py:2231 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2192 +#: common/models.py:2237 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2193 +#: common/models.py:2238 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2198 +#: common/models.py:2243 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2200 +#: common/models.py:2245 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2206 +#: common/models.py:2251 #, fuzzy #| msgid "Purchase Orders" msgid "Search Return Orders" msgstr "采购订单" -#: common/models.py:2207 +#: common/models.py:2252 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2212 +#: common/models.py:2257 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2214 +#: common/models.py:2259 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2220 +#: common/models.py:2265 msgid "Search Preview Results" msgstr "搜索预览结果" -#: common/models.py:2222 +#: common/models.py:2267 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2228 +#: common/models.py:2273 #, fuzzy #| msgid "Search" msgid "Regex Search" msgstr "搜索" -#: common/models.py:2229 +#: common/models.py:2274 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2234 +#: common/models.py:2279 msgid "Whole Word Search" msgstr "" -#: common/models.py:2235 +#: common/models.py:2280 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2240 +#: common/models.py:2285 msgid "Show Quantity in Forms" msgstr "在表格中显示数量" -#: common/models.py:2241 +#: common/models.py:2286 msgid "Display available part quantity in some forms" msgstr "在某些表格中显示可用的商品数量" -#: common/models.py:2246 +#: common/models.py:2291 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2247 +#: common/models.py:2292 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2252 +#: common/models.py:2297 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2253 +#: common/models.py:2298 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2258 +#: common/models.py:2303 msgid "Date Format" msgstr "" -#: common/models.py:2259 +#: common/models.py:2304 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2272 part/templates/part/detail.html:41 +#: common/models.py:2317 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2273 +#: common/models.py:2318 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2278 part/templates/part/detail.html:62 +#: common/models.py:2323 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2280 +#: common/models.py:2325 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2286 +#: common/models.py:2331 msgid "Table String Length" msgstr "" -#: common/models.py:2288 +#: common/models.py:2333 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2294 +#: common/models.py:2339 #, fuzzy #| msgid "Select Label Template" msgid "Default part label template" msgstr "选择标签模板" -#: common/models.py:2295 +#: common/models.py:2340 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2300 +#: common/models.py:2345 #, fuzzy #| msgid "stock items selected" msgid "Default stock item template" msgstr "已选择库存项" -#: common/models.py:2302 +#: common/models.py:2347 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2308 +#: common/models.py:2353 #, fuzzy #| msgid "No stock location set" msgid "Default stock location label template" msgstr "未设置仓储地点" -#: common/models.py:2310 +#: common/models.py:2355 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2316 +#: common/models.py:2361 msgid "Receive error reports" msgstr "" -#: common/models.py:2317 +#: common/models.py:2362 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2361 +#: common/models.py:2367 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2368 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2411 msgid "Price break quantity" msgstr "" -#: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: common/models.py:2418 company/serializers.py:484 order/admin.py:42 +#: order/models.py:1316 order/models.py:2208 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 msgid "Price" msgstr "价格" -#: common/models.py:2369 +#: common/models.py:2419 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2540 common/models.py:2725 +#: common/models.py:2590 common/models.py:2775 msgid "Endpoint" msgstr "" -#: common/models.py:2541 +#: common/models.py:2591 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2551 +#: common/models.py:2601 msgid "Name for this webhook" msgstr "" -#: common/models.py:2555 part/admin.py:88 part/models.py:1028 -#: plugin/models.py:45 templates/js/translated/table_filters.js:135 +#: common/models.py:2605 machine/models.py:39 part/admin.py:88 +#: part/models.py:1040 plugin/models.py:56 +#: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:488 #: templates/js/translated/table_filters.js:516 @@ -3579,101 +3639,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2555 +#: common/models.py:2605 msgid "Is this webhook active" msgstr "" -#: common/models.py:2571 users/models.py:148 +#: common/models.py:2621 users/models.py:148 msgid "Token" msgstr "令牌" -#: common/models.py:2572 +#: common/models.py:2622 msgid "Token for access" msgstr "" -#: common/models.py:2580 +#: common/models.py:2630 msgid "Secret" msgstr "" -#: common/models.py:2581 +#: common/models.py:2631 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2689 +#: common/models.py:2739 msgid "Message ID" msgstr "" -#: common/models.py:2690 +#: common/models.py:2740 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2698 +#: common/models.py:2748 msgid "Host" msgstr "" -#: common/models.py:2699 +#: common/models.py:2749 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2757 msgid "Header" msgstr "" -#: common/models.py:2708 +#: common/models.py:2758 msgid "Header of this message" msgstr "" -#: common/models.py:2715 +#: common/models.py:2765 msgid "Body" msgstr "" -#: common/models.py:2716 +#: common/models.py:2766 msgid "Body of this message" msgstr "" -#: common/models.py:2726 +#: common/models.py:2776 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2731 +#: common/models.py:2781 msgid "Worked on" msgstr "" -#: common/models.py:2732 +#: common/models.py:2782 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2853 +#: common/models.py:2908 msgid "Id" msgstr "" -#: common/models.py:2855 templates/js/translated/company.js:955 +#: common/models.py:2910 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2859 templates/js/translated/news.js:60 +#: common/models.py:2914 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2861 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2916 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" msgstr "" -#: common/models.py:2863 templates/js/translated/news.js:52 +#: common/models.py:2918 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Read" msgstr "" -#: common/models.py:2866 +#: common/models.py:2921 msgid "Was this news item read?" msgstr "" -#: common/models.py:2883 company/models.py:157 part/models.py:912 +#: common/models.py:2938 company/models.py:154 part/models.py:924 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3683,41 +3743,41 @@ msgstr "" msgid "Image" msgstr "图片" -#: common/models.py:2883 +#: common/models.py:2938 #, fuzzy #| msgid "Image" msgid "Image file" msgstr "图片" -#: common/models.py:2925 +#: common/models.py:2980 #, fuzzy #| msgid "Must be a valid number" msgid "Unit name must be a valid identifier" msgstr "必须是有效数字" -#: common/models.py:2944 +#: common/models.py:2999 #, fuzzy #| msgid "Part name" msgid "Unit name" msgstr "商品名称" -#: common/models.py:2951 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3006 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:2952 +#: common/models.py:3007 #, fuzzy #| msgid "Optional Items" msgid "Optional unit symbol" msgstr "可选项目" -#: common/models.py:2959 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3014 templates/InvenTree/settings/settings_staff_js.html:71 #, fuzzy #| msgid "Destination" msgid "Definition" msgstr "目的地" -#: common/models.py:2960 +#: common/models.py:3015 msgid "Unit definition" msgstr "" @@ -3757,6 +3817,80 @@ msgstr "收到定购单" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +#, fuzzy +#| msgid "Pending" +msgid "Pending Tasks" +msgstr "待定" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +#, fuzzy +#| msgid "Stock Item" +msgid "Lock time" +msgstr "库存项" + +#: common/serializers.py:370 +#, fuzzy +#| msgid "Part name" +msgid "Task name" +msgstr "商品名称" + +#: common/serializers.py:372 +#, fuzzy +#| msgid "Production" +msgid "Function" +msgstr "生产中" + +#: common/serializers.py:372 +#, fuzzy +#| msgid "Part name" +msgid "Function name" +msgstr "商品名称" + +#: common/serializers.py:374 +#, fuzzy +#| msgid "Attachments" +msgid "Arguments" +msgstr "附件" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +#, fuzzy +#| msgid "Keywords" +msgid "Keyword Arguments" +msgstr "关键词" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3795,202 +3929,202 @@ msgstr "已导入商品" msgid "Previous Step" msgstr "" -#: company/models.py:115 +#: company/models.py:112 msgid "Company description" msgstr "公司简介" -#: company/models.py:116 +#: company/models.py:113 msgid "Description of the company" msgstr "公司简介" -#: company/models.py:121 company/templates/company/company_base.html:100 +#: company/models.py:118 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" msgstr "网站" -#: company/models.py:121 +#: company/models.py:118 msgid "Company website URL" msgstr "公司网站" -#: company/models.py:126 +#: company/models.py:123 msgid "Phone number" msgstr "电话号码" -#: company/models.py:128 +#: company/models.py:125 msgid "Contact phone number" msgstr "联系电话" -#: company/models.py:135 +#: company/models.py:132 msgid "Contact email address" msgstr "联系人电子邮件" -#: company/models.py:140 company/templates/company/company_base.html:139 -#: order/models.py:313 order/templates/order/order_base.html:203 +#: company/models.py:137 company/templates/company/company_base.html:139 +#: order/models.py:318 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "联系人" -#: company/models.py:142 +#: company/models.py:139 msgid "Point of contact" msgstr "" -#: company/models.py:148 +#: company/models.py:145 msgid "Link to external company information" msgstr "链接到外部公司信息" -#: company/models.py:162 +#: company/models.py:159 msgid "is customer" msgstr "是客户" -#: company/models.py:163 +#: company/models.py:160 msgid "Do you sell items to this company?" msgstr "您是否向该公司出售商品?" -#: company/models.py:168 +#: company/models.py:165 msgid "is supplier" msgstr "是供应商" -#: company/models.py:169 +#: company/models.py:166 msgid "Do you purchase items from this company?" msgstr "您是否从该公司采购商品?" -#: company/models.py:174 +#: company/models.py:171 msgid "is manufacturer" msgstr "是制造商" -#: company/models.py:175 +#: company/models.py:172 msgid "Does this company manufacture parts?" msgstr "该公司制造商品吗?" -#: company/models.py:183 +#: company/models.py:180 msgid "Default currency used for this company" msgstr "该公司使用的默认货币" -#: company/models.py:268 company/models.py:377 +#: company/models.py:265 company/models.py:374 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "公司" -#: company/models.py:378 +#: company/models.py:375 #, fuzzy #| msgid "Delete Company" msgid "Select company" msgstr "删除该公司" -#: company/models.py:383 +#: company/models.py:380 #, fuzzy #| msgid "Address" msgid "Address title" msgstr "地址" -#: company/models.py:384 +#: company/models.py:381 msgid "Title describing the address entry" msgstr "" -#: company/models.py:390 +#: company/models.py:387 #, fuzzy #| msgid "Company address" msgid "Primary address" msgstr "公司地址" -#: company/models.py:391 +#: company/models.py:388 #, fuzzy #| msgid "Contact email address" msgid "Set as primary address" msgstr "联系人电子邮件" -#: company/models.py:396 templates/js/translated/company.js:904 +#: company/models.py:393 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" msgstr "" -#: company/models.py:397 +#: company/models.py:394 #, fuzzy #| msgid "Address" msgid "Address line 1" msgstr "地址" -#: company/models.py:403 templates/js/translated/company.js:905 +#: company/models.py:400 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" msgstr "" -#: company/models.py:404 +#: company/models.py:401 #, fuzzy #| msgid "Address" msgid "Address line 2" msgstr "地址" -#: company/models.py:410 company/models.py:411 +#: company/models.py:407 company/models.py:408 #: templates/js/translated/company.js:973 msgid "Postal code" msgstr "" -#: company/models.py:417 +#: company/models.py:414 msgid "City/Region" msgstr "" -#: company/models.py:418 +#: company/models.py:415 msgid "Postal code city/region" msgstr "" -#: company/models.py:424 +#: company/models.py:421 msgid "State/Province" msgstr "" -#: company/models.py:425 +#: company/models.py:422 msgid "State or province" msgstr "" -#: company/models.py:431 templates/js/translated/company.js:991 +#: company/models.py:428 templates/js/translated/company.js:991 msgid "Country" msgstr "" -#: company/models.py:432 +#: company/models.py:429 #, fuzzy #| msgid "Address" msgid "Address country" msgstr "地址" -#: company/models.py:438 +#: company/models.py:435 msgid "Courier shipping notes" msgstr "" -#: company/models.py:439 +#: company/models.py:436 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:445 +#: company/models.py:442 #, fuzzy #| msgid "Internal company name" msgid "Internal shipping notes" msgstr "内部公司名称" -#: company/models.py:446 +#: company/models.py:443 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:453 +#: company/models.py:450 #, fuzzy #| msgid "Description (optional)" msgid "Link to address information (external)" msgstr "描述 (可选)" -#: company/models.py:482 company/models.py:776 stock/models.py:743 +#: company/models.py:481 company/models.py:780 stock/models.py:749 #: stock/serializers.py:199 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:484 company/models.py:778 +#: company/models.py:483 company/models.py:782 msgid "Select part" msgstr "选择商品" -#: company/models.py:493 company/templates/company/company_base.html:76 +#: company/models.py:492 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:145 part/serializers.py:467 #: stock/templates/stock/item_base.html:207 @@ -4002,11 +4136,11 @@ msgstr "选择商品" msgid "Manufacturer" msgstr "制造商" -#: company/models.py:494 +#: company/models.py:493 msgid "Select manufacturer" msgstr "选择制造商" -#: company/models.py:500 company/templates/company/manufacturer_part.html:101 +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:153 part/serializers.py:477 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 @@ -4017,69 +4151,69 @@ msgstr "选择制造商" msgid "MPN" msgstr "" -#: company/models.py:501 +#: company/models.py:500 msgid "Manufacturer Part Number" msgstr "制造商商品编号" -#: company/models.py:508 +#: company/models.py:507 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:516 +#: company/models.py:515 msgid "Manufacturer part description" msgstr "制造商商品描述" -#: company/models.py:573 company/models.py:600 company/models.py:802 +#: company/models.py:572 company/models.py:599 company/models.py:806 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "制造商商品" -#: company/models.py:607 +#: company/models.py:606 msgid "Parameter name" msgstr "参数名称" -#: company/models.py:613 +#: company/models.py:612 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2354 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" msgstr "数值" -#: company/models.py:614 +#: company/models.py:613 msgid "Parameter value" msgstr "参数值" -#: company/models.py:621 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:992 part/models.py:3582 +#: company/models.py:620 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1004 part/models.py:3594 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 msgid "Units" msgstr "单位" -#: company/models.py:622 +#: company/models.py:621 msgid "Parameter units" msgstr "参数单位" -#: company/models.py:716 +#: company/models.py:720 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:723 +#: company/models.py:727 #, fuzzy #| msgid "Quantity must be greater than zero" msgid "Pack units must be greater than zero" msgstr "数量必须大于0" -#: company/models.py:737 +#: company/models.py:741 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:786 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:129 order/models.py:445 +#: company/models.py:790 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:450 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 #: part/serializers.py:451 plugin/builtin/suppliers/digikey.py:25 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 @@ -4094,58 +4228,58 @@ msgstr "" msgid "Supplier" msgstr "供应商" -#: company/models.py:787 +#: company/models.py:791 msgid "Select supplier" msgstr "选择供应商" -#: company/models.py:793 part/serializers.py:462 +#: company/models.py:797 part/serializers.py:462 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:803 +#: company/models.py:807 msgid "Select manufacturer part" msgstr "选择制造商商品" -#: company/models.py:810 +#: company/models.py:814 msgid "URL for external supplier part link" msgstr "外部供货商商品链接URL" -#: company/models.py:818 +#: company/models.py:822 msgid "Supplier part description" msgstr "供应商商品描述" -#: company/models.py:825 company/templates/company/supplier_part.html:187 -#: part/admin.py:417 part/models.py:4000 part/templates/part/upload_bom.html:59 +#: company/models.py:829 company/templates/company/supplier_part.html:187 +#: part/admin.py:417 part/models.py:4016 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:505 msgid "Note" msgstr "备注" -#: company/models.py:834 part/models.py:1950 +#: company/models.py:838 part/models.py:1962 msgid "base cost" msgstr "" -#: company/models.py:835 part/models.py:1951 +#: company/models.py:839 part/models.py:1963 msgid "Minimum charge (e.g. stocking fee)" msgstr "最低收费(例如库存费)" -#: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: company/models.py:846 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:780 stock/serializers.py:1258 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "打包" -#: company/models.py:843 +#: company/models.py:847 msgid "Part packaging" msgstr "商品打包" -#: company/models.py:848 templates/js/translated/company.js:1641 +#: company/models.py:852 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 #: templates/js/translated/purchase_order.js:314 #: templates/js/translated/purchase_order.js:845 @@ -4155,27 +4289,27 @@ msgstr "商品打包" msgid "Pack Quantity" msgstr "" -#: company/models.py:850 +#: company/models.py:854 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:869 part/models.py:1957 +#: company/models.py:873 part/models.py:1969 msgid "multiple" msgstr "" -#: company/models.py:870 +#: company/models.py:874 msgid "Order multiple" msgstr "" -#: company/models.py:882 +#: company/models.py:886 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:888 +#: company/models.py:892 msgid "Availability Updated" msgstr "" -#: company/models.py:889 +#: company/models.py:893 msgid "Date of last update of availability data" msgstr "" @@ -4239,10 +4373,10 @@ msgstr "从 URL 下载图片" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: company/templates/company/company_base.html:86 order/models.py:893 +#: order/models.py:1975 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:802 +#: stock/models.py:803 stock/serializers.py:1008 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4257,7 +4391,7 @@ msgstr "客户" msgid "Uses default currency" msgstr "使用默认货币" -#: company/templates/company/company_base.html:118 order/models.py:323 +#: company/templates/company/company_base.html:118 order/models.py:328 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 #: order/templates/order/sales_order_base.html:221 @@ -4520,7 +4654,7 @@ msgid "Addresses" msgstr "地址" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:760 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4622,7 +4756,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:708 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4661,6 +4795,12 @@ msgstr "公司" msgid "New Company" msgstr "新建公司信息" +#: label/api.py:247 +#, fuzzy +#| msgid "Error renaming file" +msgid "Error printing label" +msgstr "重命名文件出错" + #: label/models.py:115 msgid "Label name" msgstr "标签名称" @@ -4677,7 +4817,7 @@ msgstr "标签" msgid "Label template file" msgstr "标签模板文件" -#: label/models.py:138 report/models.py:315 +#: label/models.py:138 report/models.py:322 msgid "Enabled" msgstr "已启用" @@ -4701,7 +4841,7 @@ msgstr "高度 [mm]" msgid "Label height, specified in mm" msgstr "标注高度,以毫米为单位。" -#: label/models.py:158 report/models.py:308 +#: label/models.py:158 report/models.py:315 msgid "Filename Pattern" msgstr "文件名样式" @@ -4717,8 +4857,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "查询筛选器 (逗号分隔的键值对列表)" #: label/models.py:309 label/models.py:348 label/models.py:373 -#: label/models.py:408 report/models.py:336 report/models.py:487 -#: report/models.py:523 report/models.py:559 report/models.py:681 +#: label/models.py:408 report/models.py:343 report/models.py:494 +#: report/models.py:530 report/models.py:566 report/models.py:688 msgid "Filters" msgstr "筛选器" @@ -4737,7 +4877,126 @@ msgstr "商品二维码" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:87 +#: machine/machine_types/label_printer.py:213 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:214 +#, fuzzy +#| msgid "Number of stock items to build" +msgid "Number of copies to print for each label" +msgstr "要生产的项目数量" + +#: machine/machine_types/label_printer.py:229 +#, fuzzy +#| msgid "Connection error" +msgid "Connected" +msgstr "连接错误" + +#: machine/machine_types/label_printer.py:230 order/api.py:1412 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +#, fuzzy +#| msgid "Print Label" +msgid "Printing" +msgstr "打印标签" + +#: machine/machine_types/label_printer.py:232 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +#, fuzzy +#| msgid "Rejected" +msgid "Disconnected" +msgstr "已拒绝" + +#: machine/machine_types/label_printer.py:240 +#, fuzzy +#| msgid "Label name" +msgid "Label Printer" +msgstr "标签名称" + +#: machine/machine_types/label_printer.py:241 +#, fuzzy +#| msgid "Allocate selected items" +msgid "Directly print labels for various items." +msgstr "分配选定项目" + +#: machine/machine_types/label_printer.py:247 +#, fuzzy +#| msgid "Print actions" +msgid "Printer Location" +msgstr "打印操作" + +#: machine/machine_types/label_printer.py:248 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +#, fuzzy +#| msgid "Available" +msgid "Driver available" +msgstr "空闲" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:110 +msgid "Errors" +msgstr "" + +#: machine/models.py:117 +#, fuzzy +#| msgid "Build status" +msgid "Machine status" +msgstr "生产状态" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:88 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 @@ -4750,7 +5009,7 @@ msgstr "" msgid "No matching purchase order found" msgstr "" -#: order/api.py:1406 order/models.py:1361 order/models.py:1457 +#: order/api.py:1406 order/models.py:1366 order/models.py:1462 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report_base.html:14 @@ -4764,7 +5023,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2175 order/models.py:2226 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4775,210 +5034,206 @@ msgstr "" msgid "Return Order" msgstr "已退回" -#: order/api.py:1412 templates/js/translated/sales_order.js:1042 -msgid "Unknown" -msgstr "" - -#: order/models.py:88 +#: order/models.py:89 #, fuzzy #| msgid "User or group responsible for this order" msgid "Total price for this order" msgstr "负责此订单的用户或群组" -#: order/models.py:93 order/serializers.py:54 +#: order/models.py:94 order/serializers.py:54 #, fuzzy #| msgid "Currency" msgid "Order Currency" msgstr "货币" -#: order/models.py:96 order/serializers.py:55 +#: order/models.py:97 order/serializers.py:55 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:228 +#: order/models.py:233 #, fuzzy #| msgid "Build output does not match the parent build" msgid "Contact does not match selected company" msgstr "生产产出与对应生产不匹配" -#: order/models.py:260 +#: order/models.py:265 #, fuzzy #| msgid "Description (optional)" msgid "Order description (optional)" msgstr "描述 (可选)" -#: order/models.py:269 +#: order/models.py:274 #, fuzzy #| msgid "User or group responsible for this order" msgid "Select project code for this order" msgstr "负责此订单的用户或群组" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:278 order/models.py:1271 order/models.py:1674 msgid "Link to external page" msgstr "" -#: order/models.py:281 +#: order/models.py:286 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:295 +#: order/models.py:300 msgid "Created By" msgstr "" -#: order/models.py:303 +#: order/models.py:308 msgid "User or group responsible for this order" msgstr "负责此订单的用户或群组" -#: order/models.py:314 +#: order/models.py:319 #, fuzzy #| msgid "Priority of this build order" msgid "Point of contact for this order" msgstr "此构建订单的优先级" -#: order/models.py:324 +#: order/models.py:329 #, fuzzy #| msgid "User or group responsible for this order" msgid "Company address for this order" msgstr "负责此订单的用户或群组" -#: order/models.py:423 order/models.py:877 +#: order/models.py:428 order/models.py:882 msgid "Order reference" msgstr "" -#: order/models.py:431 order/models.py:901 +#: order/models.py:436 order/models.py:906 msgid "Purchase order status" msgstr "" -#: order/models.py:446 +#: order/models.py:451 msgid "Company from which the items are being ordered" msgstr "订购该商品的公司" -#: order/models.py:457 order/templates/order/order_base.html:148 +#: order/models.py:462 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1699 msgid "Supplier Reference" msgstr "" -#: order/models.py:458 +#: order/models.py:463 msgid "Supplier order reference code" msgstr "" -#: order/models.py:467 +#: order/models.py:472 msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:478 order/models.py:2001 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:479 order/models.py:2002 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:486 order/models.py:2009 msgid "Date order was completed" msgstr "" -#: order/models.py:525 +#: order/models.py:530 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:719 +#: order/models.py:724 msgid "Quantity must be a positive number" msgstr "数量必须大于0" -#: order/models.py:889 +#: order/models.py:894 msgid "Company to which the items are being sold" msgstr "向其出售该商品的公司" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:917 order/models.py:1994 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:918 order/models.py:1995 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:922 order/models.py:1628 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" msgstr "" -#: order/models.py:926 +#: order/models.py:931 msgid "shipped by" msgstr "" -#: order/models.py:977 +#: order/models.py:982 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:982 +#: order/models.py:987 #, fuzzy #| msgid "Build Order is ready to mark as completed" msgid "Only an open order can be marked as complete" msgstr "构建订单已准备好标记为已完成" -#: order/models.py:986 templates/js/translated/sales_order.js:506 +#: order/models.py:991 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:991 +#: order/models.py:996 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1238 +#: order/models.py:1243 msgid "Item quantity" msgstr "" -#: order/models.py:1255 +#: order/models.py:1260 msgid "Line item reference" msgstr "" -#: order/models.py:1262 +#: order/models.py:1267 msgid "Line item notes" msgstr "" -#: order/models.py:1274 +#: order/models.py:1279 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1295 +#: order/models.py:1300 #, fuzzy #| msgid "Description (optional)" msgid "Line item description (optional)" msgstr "描述 (可选)" -#: order/models.py:1301 +#: order/models.py:1306 msgid "Context" msgstr "" -#: order/models.py:1302 +#: order/models.py:1307 msgid "Additional context for this line" msgstr "" -#: order/models.py:1312 +#: order/models.py:1317 msgid "Unit price" msgstr "" -#: order/models.py:1345 +#: order/models.py:1350 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1352 +#: order/models.py:1357 msgid "deleted" msgstr "" -#: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1365 order/models.py:1461 order/models.py:1507 +#: order/models.py:1621 order/models.py:1773 order/models.py:2174 +#: order/models.py:2225 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" -#: order/models.py:1380 +#: order/models.py:1385 msgid "Supplier part" msgstr "供应商商品" -#: order/models.py:1387 order/templates/order/order_base.html:196 +#: order/models.py:1392 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 #: templates/js/translated/purchase_order.js:1302 #: templates/js/translated/purchase_order.js:2166 @@ -4988,337 +5243,337 @@ msgstr "供应商商品" msgid "Received" msgstr "" -#: order/models.py:1388 +#: order/models.py:1393 msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1401 stock/models.py:921 stock/serializers.py:326 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "采购价格" -#: order/models.py:1397 +#: order/models.py:1402 msgid "Unit purchase price" msgstr "" -#: order/models.py:1412 +#: order/models.py:1417 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1490 +#: order/models.py:1495 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1495 +#: order/models.py:1500 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1521 part/templates/part/part_pricing.html:107 +#: order/models.py:1526 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "销售价格" -#: order/models.py:1522 +#: order/models.py:1527 msgid "Unit sale price" msgstr "" -#: order/models.py:1532 +#: order/models.py:1537 msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1629 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1635 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1636 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1644 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1645 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 -#: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 +#: order/models.py:1652 order/models.py:1863 order/serializers.py:1299 +#: order/serializers.py:1409 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1653 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1661 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1662 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1669 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1670 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1690 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1693 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1809 order/models.py:1811 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1818 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1821 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1824 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1843 order/serializers.py:1176 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1846 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1847 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1855 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1864 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1877 order/models.py:2182 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1878 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1887 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1964 #, fuzzy #| msgid "Build Order Reference" msgid "Return Order reference" msgstr "相关生产订单" -#: order/models.py:1961 +#: order/models.py:1976 #, fuzzy #| msgid "Company from which the items are being ordered" msgid "Company from which items are being returned" msgstr "订购该商品的公司" -#: order/models.py:1973 +#: order/models.py:1988 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2167 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2183 #, fuzzy #| msgid "Returned from customer" msgid "Select item to return from customer" msgstr "从客户退货" -#: order/models.py:2174 +#: order/models.py:2189 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2190 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2201 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2202 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2209 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:264 +#: order/serializers.py:266 msgid "Order cannot be cancelled" msgstr "无法取消订单" -#: order/serializers.py:279 order/serializers.py:1190 +#: order/serializers.py:281 order/serializers.py:1192 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:289 order/serializers.py:1200 +#: order/serializers.py:291 order/serializers.py:1202 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:400 +#: order/serializers.py:402 msgid "Order is not open" msgstr "" -#: order/serializers.py:425 +#: order/serializers.py:427 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:443 +#: order/serializers.py:445 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:446 +#: order/serializers.py:448 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:454 +#: order/serializers.py:456 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:455 +#: order/serializers.py:457 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:494 order/serializers.py:1268 +#: order/serializers.py:496 order/serializers.py:1270 msgid "Line Item" msgstr "" -#: order/serializers.py:500 +#: order/serializers.py:502 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:510 order/serializers.py:618 order/serializers.py:1623 +#: order/serializers.py:512 order/serializers.py:620 order/serializers.py:1625 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:526 templates/js/translated/purchase_order.js:1126 +#: order/serializers.py:528 templates/js/translated/purchase_order.js:1126 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:534 templates/js/translated/purchase_order.js:1150 +#: order/serializers.py:536 templates/js/translated/purchase_order.js:1150 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:545 templates/js/translated/barcode.js:52 +#: order/serializers.py:547 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "条形码" -#: order/serializers.py:546 +#: order/serializers.py:548 #, fuzzy #| msgid "Scan Barcode" msgid "Scanned barcode" msgstr "扫描条形码" -#: order/serializers.py:562 +#: order/serializers.py:564 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:588 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:634 order/serializers.py:1639 +#: order/serializers.py:636 order/serializers.py:1641 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:652 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:661 +#: order/serializers.py:663 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1018 +#: order/serializers.py:1020 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1078 +#: order/serializers.py:1080 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1138 order/serializers.py:1277 +#: order/serializers.py:1140 order/serializers.py:1279 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1157 +#: order/serializers.py:1159 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1287 +#: order/serializers.py:1289 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1309 order/serializers.py:1415 +#: order/serializers.py:1311 order/serializers.py:1417 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1312 order/serializers.py:1418 +#: order/serializers.py:1314 order/serializers.py:1420 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1359 +#: order/serializers.py:1361 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1366 +#: order/serializers.py:1368 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1593 +#: order/serializers.py:1595 msgid "Return order line item" msgstr "" -#: order/serializers.py:1599 +#: order/serializers.py:1601 #, fuzzy #| msgid "Build output does not match Build Order" msgid "Line item does not match return order" msgstr "生产产出与订单不匹配" -#: order/serializers.py:1602 +#: order/serializers.py:1604 #, fuzzy #| msgid "This build output has already been completed" msgid "Line item has already been received" msgstr "此生产产出已经完成" -#: order/serializers.py:1631 +#: order/serializers.py:1633 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1709 +#: order/serializers.py:1711 #, fuzzy #| msgid "Uses default currency" msgid "Line price currency" @@ -5512,8 +5767,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1624 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5746,13 +6001,13 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:403 part/models.py:3851 part/stocktake.py:218 -#: stock/admin.py:151 +#: part/admin.py:39 part/admin.py:403 part/models.py:3867 part/stocktake.py:218 +#: stock/admin.py:153 msgid "Part ID" msgstr "商品ID" -#: part/admin.py:41 part/admin.py:410 part/models.py:3852 part/stocktake.py:219 -#: stock/admin.py:155 +#: part/admin.py:41 part/admin.py:410 part/models.py:3868 part/stocktake.py:219 +#: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5760,20 +6015,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:887 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:899 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:896 part/templates/part/part_base.html:277 -#: report/models.py:191 templates/js/translated/part.js:1231 +#: part/admin.py:50 part/models.py:908 part/templates/part/part_base.html:277 +#: report/models.py:193 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:869 +#: part/admin.py:53 part/admin.py:317 part/models.py:881 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "关键词" @@ -5800,11 +6055,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:855 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:867 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:983 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:995 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "最低库存" @@ -5814,33 +6069,26 @@ msgstr "最低库存" msgid "In Stock" msgstr "" -#: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 -#: templates/js/translated/table_filters.js:170 -msgid "On Order" -msgstr "" - #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" msgstr "" -#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:229 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3053 part/models.py:3067 +#: part/admin.py:155 part/models.py:3065 part/models.py:3079 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3060 part/models.py:3074 +#: part/admin.py:158 part/models.py:3072 part/models.py:3086 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "" -#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:209 +#: part/admin.py:306 part/admin.py:392 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" @@ -5853,7 +6101,7 @@ msgstr "" msgid "Category Path" msgstr "类别路径" -#: part/admin.py:323 part/models.py:389 part/serializers.py:343 +#: part/admin.py:323 part/models.py:388 part/serializers.py:343 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 #: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 @@ -5876,51 +6124,51 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:407 part/models.py:3853 +#: part/admin.py:407 part/models.py:3869 msgid "Part IPN" msgstr "" -#: part/admin.py:420 part/serializers.py:1182 +#: part/admin.py:420 part/serializers.py:1190 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:425 part/serializers.py:1197 +#: part/admin.py:425 part/serializers.py:1205 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:523 +#: part/api.py:534 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:541 +#: part/api.py:552 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:557 +#: part/api.py:568 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:641 +#: part/api.py:652 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:786 +#: part/api.py:799 msgid "Valid" msgstr "" -#: part/api.py:787 +#: part/api.py:800 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:793 +#: part/api.py:806 msgid "This option must be selected" msgstr "" -#: part/bom.py:170 part/models.py:107 part/models.py:922 +#: part/bom.py:170 part/models.py:100 part/models.py:934 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "默认仓储地点" @@ -5929,385 +6177,380 @@ msgstr "默认仓储地点" msgid "Total Stock" msgstr "" -#: part/bom.py:172 part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 -msgid "Available Stock" -msgstr "可用库存" - #: part/forms.py:49 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:88 part/models.py:3801 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3813 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "商品类别" -#: part/models.py:89 part/templates/part/category.html:136 +#: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" msgstr "商品类别" -#: part/models.py:108 +#: part/models.py:101 msgid "Default location for parts in this category" msgstr "此类别商品的默认仓储地点" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:106 stock/models.py:164 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:115 +#: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:124 +#: part/models.py:117 msgid "Default keywords" msgstr "" -#: part/models.py:125 +#: part/models.py:118 msgid "Default keywords for parts in this category" msgstr "此类别商品的默认关键字" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:124 stock/models.py:88 stock/models.py:147 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:125 stock/models.py:148 msgid "Icon (optional)" msgstr "" -#: part/models.py:152 +#: part/models.py:145 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:479 +#: part/models.py:481 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:523 part/models.py:530 +#: part/models.py:529 part/models.py:536 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:542 +#: part/models.py:548 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:607 +#: part/models.py:613 #, fuzzy, python-brace-format #| msgid "IPN must match regex pattern {pat}" msgid "IPN must match regex pattern {pattern}" msgstr "IPN 必须匹配正则表达式 {pat}" -#: part/models.py:687 +#: part/models.py:693 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:790 +#: part/models.py:796 msgid "Duplicate IPN not allowed in part settings" msgstr "在商品设置中不允许重复的IPN" -#: part/models.py:800 +#: part/models.py:806 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:815 +#: part/models.py:821 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:838 part/models.py:3852 +#: part/models.py:850 part/models.py:3868 msgid "Part name" msgstr "商品名称" -#: part/models.py:843 +#: part/models.py:855 msgid "Is Template" msgstr "" -#: part/models.py:844 +#: part/models.py:856 msgid "Is this part a template part?" msgstr "" -#: part/models.py:854 +#: part/models.py:866 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:862 +#: part/models.py:874 #, fuzzy #| msgid "Description (optional)" msgid "Part description (optional)" msgstr "描述 (可选)" -#: part/models.py:870 +#: part/models.py:882 msgid "Part keywords to improve visibility in search results" msgstr "提高搜索结果可见性的关键字" -#: part/models.py:879 part/models.py:3359 part/models.py:3800 -#: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/models.py:891 part/models.py:3371 part/models.py:3812 +#: part/serializers.py:358 part/serializers.py:1046 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 msgid "Category" msgstr "类别" -#: part/models.py:880 +#: part/models.py:892 msgid "Part category" msgstr "商品类别" -#: part/models.py:888 +#: part/models.py:900 msgid "Internal Part Number" msgstr "内部商品编号" -#: part/models.py:895 +#: part/models.py:907 msgid "Part revision or version number" msgstr "商品版本号" -#: part/models.py:920 +#: part/models.py:932 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:376 +#: part/models.py:978 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:979 msgid "Default supplier part" msgstr "默认供应商商品" -#: part/models.py:974 +#: part/models.py:986 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:987 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:984 +#: part/models.py:996 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:993 +#: part/models.py:1005 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1000 +#: part/models.py:1012 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1006 +#: part/models.py:1018 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1012 +#: part/models.py:1024 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1018 +#: part/models.py:1030 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:1036 msgid "Can this part be sold to customers?" msgstr "此商品可以销售给客户吗?" -#: part/models.py:1028 +#: part/models.py:1040 msgid "Is this part active?" msgstr "" -#: part/models.py:1034 +#: part/models.py:1046 msgid "Is this a virtual part, such as a software product or license?" msgstr "这是一个虚拟商品,如软件产品或许可证吗?" -#: part/models.py:1040 +#: part/models.py:1052 msgid "BOM checksum" msgstr "" -#: part/models.py:1041 +#: part/models.py:1053 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1049 +#: part/models.py:1061 msgid "BOM checked by" msgstr "" -#: part/models.py:1054 +#: part/models.py:1066 msgid "BOM checked date" msgstr "" -#: part/models.py:1070 +#: part/models.py:1082 msgid "Creation User" msgstr "新建用户" -#: part/models.py:1080 +#: part/models.py:1092 #, fuzzy #| msgid "User or group responsible for this order" msgid "Owner responsible for this part" msgstr "负责此订单的用户或群组" -#: part/models.py:1085 part/templates/part/part_base.html:339 +#: part/models.py:1097 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:1958 +#: part/models.py:1970 msgid "Sell multiple" msgstr "" -#: part/models.py:2967 +#: part/models.py:2979 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2983 +#: part/models.py:2995 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2984 +#: part/models.py:2996 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2990 +#: part/models.py:3002 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2991 +#: part/models.py:3003 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2997 +#: part/models.py:3009 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2998 +#: part/models.py:3010 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3004 +#: part/models.py:3016 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3005 +#: part/models.py:3017 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3023 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3012 +#: part/models.py:3024 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3018 +#: part/models.py:3030 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3019 +#: part/models.py:3031 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3025 +#: part/models.py:3037 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3026 +#: part/models.py:3038 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3032 +#: part/models.py:3044 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3033 +#: part/models.py:3045 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3039 +#: part/models.py:3051 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3040 +#: part/models.py:3052 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3046 +#: part/models.py:3058 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3047 +#: part/models.py:3059 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3054 +#: part/models.py:3066 msgid "Override minimum cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3073 msgid "Override maximum cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3080 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3087 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3093 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3094 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3100 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3101 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3107 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3096 +#: part/models.py:3108 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3102 +#: part/models.py:3114 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3103 +#: part/models.py:3115 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3122 +#: part/models.py:3134 msgid "Part for stocktake" msgstr "" -#: part/models.py:3127 +#: part/models.py:3139 msgid "Item Count" msgstr "" -#: part/models.py:3128 +#: part/models.py:3140 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3136 +#: part/models.py:3148 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3140 part/models.py:3223 +#: part/models.py:3152 part/models.py:3235 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 @@ -6319,328 +6562,324 @@ msgstr "" msgid "Date" msgstr "" -#: part/models.py:3141 +#: part/models.py:3153 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3149 +#: part/models.py:3161 msgid "Additional notes" msgstr "" -#: part/models.py:3159 +#: part/models.py:3171 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3165 +#: part/models.py:3177 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3178 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3172 +#: part/models.py:3184 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3185 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3229 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3241 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3230 +#: part/models.py:3242 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3235 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3247 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3236 +#: part/models.py:3248 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3246 +#: part/models.py:3258 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3406 +#: part/models.py:3418 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3423 +#: part/models.py:3435 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3444 templates/js/translated/part.js:2868 +#: part/models.py:3456 templates/js/translated/part.js:2868 msgid "Test Name" msgstr "" -#: part/models.py:3445 +#: part/models.py:3457 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3452 +#: part/models.py:3464 msgid "Test Description" msgstr "" -#: part/models.py:3453 +#: part/models.py:3465 msgid "Enter description for this test" msgstr "" -#: part/models.py:3458 templates/js/translated/part.js:2877 +#: part/models.py:3470 templates/js/translated/part.js:2877 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3459 +#: part/models.py:3471 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2885 +#: part/models.py:3476 templates/js/translated/part.js:2885 msgid "Requires Value" msgstr "" -#: part/models.py:3465 +#: part/models.py:3477 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3470 templates/js/translated/part.js:2892 +#: part/models.py:3482 templates/js/translated/part.js:2892 msgid "Requires Attachment" msgstr "" -#: part/models.py:3472 +#: part/models.py:3484 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3519 +#: part/models.py:3531 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3524 +#: part/models.py:3536 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3544 +#: part/models.py:3556 #, fuzzy #| msgid "Key string must be unique" msgid "Choices must be unique" msgstr "关键字必须是唯一的" -#: part/models.py:3561 +#: part/models.py:3573 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3576 +#: part/models.py:3588 msgid "Parameter Name" msgstr "" -#: part/models.py:3583 +#: part/models.py:3595 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3591 +#: part/models.py:3603 msgid "Parameter description" msgstr "" -#: part/models.py:3597 templates/js/translated/part.js:1627 +#: part/models.py:3609 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3598 +#: part/models.py:3610 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3603 templates/js/translated/part.js:1636 +#: part/models.py:3615 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3604 +#: part/models.py:3616 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3681 +#: part/models.py:3693 #, fuzzy #| msgid "Invalid choice for parent build" msgid "Invalid choice for parameter value" msgstr "上级生产选项无效" -#: part/models.py:3724 +#: part/models.py:3736 msgid "Parent Part" msgstr "" -#: part/models.py:3732 part/models.py:3808 part/models.py:3809 +#: part/models.py:3744 part/models.py:3820 part/models.py:3821 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "参数模板" -#: part/models.py:3737 +#: part/models.py:3749 msgid "Data" msgstr "" -#: part/models.py:3738 +#: part/models.py:3750 msgid "Parameter Value" msgstr "" -#: part/models.py:3815 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3827 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "默认值" -#: part/models.py:3816 +#: part/models.py:3828 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3850 +#: part/models.py:3866 msgid "Part ID or part name" msgstr "" -#: part/models.py:3851 +#: part/models.py:3867 msgid "Unique part ID value" msgstr "" -#: part/models.py:3853 +#: part/models.py:3869 msgid "Part IPN value" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "Level" msgstr "" -#: part/models.py:3854 +#: part/models.py:3870 msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 -msgid "BOM Item" -msgstr "BOM项" - -#: part/models.py:3944 +#: part/models.py:3960 msgid "Select parent part" msgstr "" -#: part/models.py:3954 +#: part/models.py:3970 msgid "Sub part" msgstr "" -#: part/models.py:3955 +#: part/models.py:3971 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3966 +#: part/models.py:3982 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3972 +#: part/models.py:3988 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3978 +#: part/models.py:3994 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3985 part/templates/part/upload_bom.html:55 +#: part/models.py:4001 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3986 +#: part/models.py:4002 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3993 +#: part/models.py:4009 msgid "BOM item reference" msgstr "" -#: part/models.py:4001 +#: part/models.py:4017 msgid "BOM item notes" msgstr "" -#: part/models.py:4007 +#: part/models.py:4023 msgid "Checksum" msgstr "" -#: part/models.py:4008 +#: part/models.py:4024 msgid "BOM line checksum" msgstr "" -#: part/models.py:4013 templates/js/translated/table_filters.js:174 +#: part/models.py:4029 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4014 +#: part/models.py:4030 #, fuzzy #| msgid "Some stock items have been overallocated" msgid "This BOM item has been validated" msgstr "一些库存项已被过度分配" -#: part/models.py:4019 part/templates/part/upload_bom.html:57 +#: part/models.py:4035 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:1054 #: templates/js/translated/table_filters.js:178 #: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "" -#: part/models.py:4020 +#: part/models.py:4036 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4025 part/templates/part/upload_bom.html:56 +#: part/models.py:4041 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4026 +#: part/models.py:4042 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4127 stock/models.py:646 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4121 part/models.py:4123 +#: part/models.py:4137 part/models.py:4139 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4263 +#: part/models.py:4279 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4284 +#: part/models.py:4300 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4297 +#: part/models.py:4313 msgid "Parent BOM item" msgstr "" -#: part/models.py:4305 +#: part/models.py:4321 msgid "Substitute part" msgstr "" -#: part/models.py:4321 +#: part/models.py:4337 msgid "Part 1" msgstr "" -#: part/models.py:4329 +#: part/models.py:4345 msgid "Part 2" msgstr "" -#: part/models.py:4330 +#: part/models.py:4346 msgid "Select Related Part" msgstr "" -#: part/models.py:4349 +#: part/models.py:4365 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4354 +#: part/models.py:4370 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:332 msgid "Purchase currency of this stock item" msgstr "" @@ -6742,207 +6981,207 @@ msgstr "" msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:777 part/templates/part/copy_part.html:9 +#: part/serializers.py:785 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "复制部件" -#: part/serializers.py:778 +#: part/serializers.py:786 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:784 templates/js/translated/part.js:102 +#: part/serializers.py:792 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:785 +#: part/serializers.py:793 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:791 +#: part/serializers.py:799 msgid "Supplier Information" msgstr "" -#: part/serializers.py:792 +#: part/serializers.py:800 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:800 +#: part/serializers.py:808 msgid "Copy Category Parameters" msgstr "复制类别参数" -#: part/serializers.py:801 +#: part/serializers.py:809 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:806 +#: part/serializers.py:814 #, fuzzy #| msgid "Existing barcode found" msgid "Existing Image" msgstr "发现现有条码" -#: part/serializers.py:807 +#: part/serializers.py:815 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:824 +#: part/serializers.py:832 #, fuzzy #| msgid "Part image not found" msgid "Image file does not exist" msgstr "未找到商品图像" -#: part/serializers.py:1030 +#: part/serializers.py:1038 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1040 +#: part/serializers.py:1048 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1050 +#: part/serializers.py:1058 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1056 +#: part/serializers.py:1064 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1057 +#: part/serializers.py:1065 #, fuzzy #| msgid "Exclude stock items from this selected location" msgid "Exclude stock items in external locations" msgstr "从该选定的仓储地点排除库存项" -#: part/serializers.py:1062 +#: part/serializers.py:1070 msgid "Generate Report" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:1071 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1076 msgid "Update Parts" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:1077 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1077 +#: part/serializers.py:1085 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1183 +#: part/serializers.py:1191 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1190 +#: part/serializers.py:1198 #, fuzzy #| msgid "Uses default currency" msgid "Minimum price currency" msgstr "使用默认货币" -#: part/serializers.py:1198 +#: part/serializers.py:1206 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1205 +#: part/serializers.py:1213 #, fuzzy #| msgid "Uses default currency" msgid "Maximum price currency" msgstr "使用默认货币" -#: part/serializers.py:1234 +#: part/serializers.py:1242 msgid "Update" msgstr "" -#: part/serializers.py:1235 +#: part/serializers.py:1243 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1258 +#: part/serializers.py:1266 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1265 +#: part/serializers.py:1273 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1268 +#: part/serializers.py:1276 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1592 +#: part/serializers.py:1602 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1600 +#: part/serializers.py:1610 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1601 +#: part/serializers.py:1611 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1606 +#: part/serializers.py:1616 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1607 +#: part/serializers.py:1617 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1612 +#: part/serializers.py:1622 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1613 +#: part/serializers.py:1623 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1618 +#: part/serializers.py:1628 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1619 +#: part/serializers.py:1629 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1663 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1654 +#: part/serializers.py:1664 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1684 +#: part/serializers.py:1694 msgid "No part column specified" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1738 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1741 msgid "No matching part found" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1744 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1743 +#: part/serializers.py:1753 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1761 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1772 +#: part/serializers.py:1782 msgid "At least one BOM item is required" msgstr "" @@ -7107,7 +7346,7 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:249 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2186 users/models.py:191 msgid "Stocktake" @@ -7401,12 +7640,6 @@ msgstr "商品二维码" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -#, fuzzy -#| msgid "Edit part" -msgid "part" -msgstr "编辑商品" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7523,7 +7756,7 @@ msgstr "商品价格" msgid "Edit" msgstr "编辑" -#: part/templates/part/prices.html:28 stock/admin.py:245 +#: part/templates/part/prices.html:28 stock/admin.py:247 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 @@ -7681,11 +7914,15 @@ msgstr "未找到商品图像" msgid "Part Pricing" msgstr "商品价格" -#: plugin/base/action/api.py:24 +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 msgid "No action specified" msgstr "未指定操作" -#: plugin/base/action/api.py:33 +#: plugin/base/action/api.py:41 msgid "No matching action found" msgstr "未找到指定操作" @@ -7761,7 +7998,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "在BOM中找不到选定的库存项" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2588 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7892,6 +8129,24 @@ msgstr "分配到生产的数量" msgid "Label printing failed" msgstr "" +#: plugin/base/label/mixins.py:63 +#, fuzzy +#| msgid "Error renaming file" +msgid "Error rendering label to PDF" +msgstr "重命名文件出错" + +#: plugin/base/label/mixins.py:76 +#, fuzzy +#| msgid "Error renaming file" +msgid "Error rendering label to HTML" +msgstr "重命名文件出错" + +#: plugin/base/label/mixins.py:95 +#, fuzzy +#| msgid "Error renaming file" +msgid "Error rendering label to PNG" +msgstr "重命名文件出错" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" msgstr "" @@ -7904,6 +8159,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:35 #: plugin/builtin/integration/currency_exchange.py:21 #: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 @@ -7978,6 +8234,24 @@ msgstr "调试模式" msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +#, fuzzy +#| msgid "Part(s) must be selected before printing labels" +msgid "Provides support for printing using a machine" +msgstr "打印标签前必须选择商品" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "选项" + #: plugin/builtin/labels/label_sheet.py:29 #, fuzzy #| msgid "Default page size for PDF reports" @@ -8002,7 +8276,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:205 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 msgid "Landscape" msgstr "" @@ -8086,87 +8360,123 @@ msgstr "打印标签前必须选择商品" msgid "The Supplier which acts as 'TME'" msgstr "" -#: plugin/installer.py:140 -msgid "Permission denied: only staff users can install plugins" +#: plugin/installer.py:194 plugin/installer.py:279 +msgid "Only staff users can administer plugins" msgstr "" -#: plugin/installer.py:189 +#: plugin/installer.py:245 #, fuzzy #| msgid "Installed into assembly" msgid "Installed plugin successfully" msgstr "安装到组装中" -#: plugin/installer.py:195 +#: plugin/installer.py:251 #, fuzzy, python-brace-format #| msgid "Installed into assembly" msgid "Installed plugin into {path}" msgstr "安装到组装中" -#: plugin/installer.py:203 -msgid "Plugin installation failed" +#: plugin/installer.py:270 +msgid "Plugin was not found in registry" msgstr "" -#: plugin/models.py:29 +#: plugin/installer.py:273 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:276 +#, fuzzy +#| msgid "Part image not found" +msgid "Plugin package name not found" +msgstr "未找到商品图像" + +#: plugin/installer.py:297 +#, fuzzy +#| msgid "Print actions" +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "打印操作" + +#: plugin/installer.py:310 +#, fuzzy +#| msgid "Installed into assembly" +msgid "Uninstalled plugin successfully" +msgstr "安装到组装中" + +#: plugin/models.py:30 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:30 +#: plugin/models.py:31 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 users/models.py:89 +#: plugin/models.py:34 users/models.py:89 msgid "Key" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 msgid "Key of plugin" msgstr "" -#: plugin/models.py:41 +#: plugin/models.py:42 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:45 +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:139 templates/js/translated/table_filters.js:370 +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:500 msgid "Installed" msgstr "" -#: plugin/models.py:148 +#: plugin/models.py:157 msgid "Sample plugin" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:180 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:173 +#, fuzzy +#| msgid "Packaging" +msgid "Package Plugin" +msgstr "打包" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:227 +#: plugin/models.py:244 msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:263 msgid "No author found" msgstr "" -#: plugin/registry.py:553 +#: plugin/registry.py:584 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:556 +#: plugin/registry.py:587 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:558 +#: plugin/registry.py:589 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8213,72 +8523,88 @@ msgstr "" msgid "InvenTree Contributors" msgstr "关于 InventTree" -#: plugin/serializers.py:79 +#: plugin/serializers.py:81 msgid "Source URL" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:87 -msgid "Package Name" -msgstr "" - -#: plugin/serializers.py:89 +#: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:93 +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:95 +#: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:108 +#: plugin/serializers.py:121 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:110 +#: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:139 +#: plugin/serializers.py:156 msgid "Full reload" msgstr "" -#: plugin/serializers.py:140 +#: plugin/serializers.py:157 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:146 +#: plugin/serializers.py:163 msgid "Force reload" msgstr "" -#: plugin/serializers.py:148 +#: plugin/serializers.py:165 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:155 +#: plugin/serializers.py:172 #, fuzzy #| msgid "Select supplier" msgid "Collect plugins" msgstr "选择供应商" -#: plugin/serializers.py:156 +#: plugin/serializers.py:173 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:178 +#: plugin/serializers.py:195 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:179 +#: plugin/serializers.py:196 msgid "Activate this plugin" msgstr "" +#: plugin/serializers.py:219 +#, fuzzy +#| msgid "Delete location" +msgid "Delete configuration" +msgstr "删除仓储地" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + #: report/api.py:175 msgid "No valid objects provided to template" msgstr "没有为模板提供有效对象" @@ -8308,105 +8634,105 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:173 +#: report/models.py:175 msgid "Template name" msgstr "" -#: report/models.py:179 +#: report/models.py:181 msgid "Report template file" msgstr "" -#: report/models.py:186 +#: report/models.py:188 msgid "Report template description" msgstr "" -#: report/models.py:192 +#: report/models.py:194 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:200 +#: report/models.py:202 #, fuzzy #| msgid "Default page size for PDF reports" msgid "Page size for PDF reports" msgstr "PDF 报表默认页面大小" -#: report/models.py:206 +#: report/models.py:208 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:309 +#: report/models.py:316 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:316 +#: report/models.py:323 msgid "Report template is enabled" msgstr "" -#: report/models.py:338 +#: report/models.py:345 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:345 +#: report/models.py:352 msgid "Include Installed Tests" msgstr "" -#: report/models.py:347 +#: report/models.py:354 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:415 +#: report/models.py:422 msgid "Build Filters" msgstr "" -#: report/models.py:416 +#: report/models.py:423 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:455 +#: report/models.py:462 msgid "Part Filters" msgstr "商品过滤器" -#: report/models.py:456 +#: report/models.py:463 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:488 +#: report/models.py:495 msgid "Purchase order query filters" msgstr "" -#: report/models.py:524 +#: report/models.py:531 msgid "Sales order query filters" msgstr "" -#: report/models.py:560 +#: report/models.py:567 msgid "Return order query filters" msgstr "" -#: report/models.py:608 +#: report/models.py:615 msgid "Snippet" msgstr "" -#: report/models.py:609 +#: report/models.py:616 msgid "Report snippet file" msgstr "" -#: report/models.py:616 +#: report/models.py:623 msgid "Snippet file description" msgstr "" -#: report/models.py:653 +#: report/models.py:660 msgid "Asset" msgstr "" -#: report/models.py:654 +#: report/models.py:661 msgid "Report asset file" msgstr "" -#: report/models.py:661 +#: report/models.py:668 msgid "Asset file description" msgstr "" -#: report/models.py:683 +#: report/models.py:690 #, fuzzy #| msgid "Query filters (comma-separated list of key=value pairs)," msgid "stock location query filters (comma-separated list of key=value pairs)" @@ -8451,9 +8777,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:807 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1362 +#: templates/js/translated/build.js:2351 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8479,12 +8805,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2344 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Result" msgstr "" @@ -8512,34 +8838,34 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:160 templates/js/translated/stock.js:700 +#: stock/admin.py:162 templates/js/translated/stock.js:700 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: report/templatetags/report.py:95 +#: report/templatetags/report.py:96 msgid "Asset file does not exist" msgstr "" -#: report/templatetags/report.py:151 report/templatetags/report.py:216 +#: report/templatetags/report.py:152 report/templatetags/report.py:217 #, fuzzy #| msgid "Part image not found" msgid "Image file not found" msgstr "未找到商品图像" -#: report/templatetags/report.py:241 +#: report/templatetags/report.py:242 msgid "part_image tag requires a Part instance" msgstr "" -#: report/templatetags/report.py:282 +#: report/templatetags/report.py:283 msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:170 +#: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:174 +#: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" msgstr "" @@ -8548,60 +8874,60 @@ msgstr "" msgid "Location Path" msgstr "" -#: stock/admin.py:147 +#: stock/admin.py:149 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:166 +#: stock/admin.py:168 #, fuzzy #| msgid "Status" msgid "Status Code" msgstr "状态" -#: stock/admin.py:178 +#: stock/admin.py:180 msgid "Supplier Part ID" msgstr "供应商商品ID" -#: stock/admin.py:183 +#: stock/admin.py:185 msgid "Supplier ID" msgstr "" -#: stock/admin.py:189 +#: stock/admin.py:191 msgid "Supplier Name" msgstr "" -#: stock/admin.py:194 +#: stock/admin.py:196 msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:201 stock/models.py:787 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:204 +#: stock/admin.py:206 msgid "Build ID" msgstr "" -#: stock/admin.py:214 +#: stock/admin.py:216 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:219 +#: stock/admin.py:221 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:234 +#: stock/admin.py:236 msgid "Review Needed" msgstr "" -#: stock/admin.py:239 +#: stock/admin.py:241 #, fuzzy #| msgid "Delete Template" msgid "Delete on Deplete" msgstr "删除模板" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:256 stock/models.py:881 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8611,62 +8937,62 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 #, fuzzy #| msgid "Part name" msgid "Part Tree" msgstr "商品名称" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:62 #, fuzzy #| msgid "Stock Location" msgid "Stock Location type" msgstr "仓储地点" -#: stock/models.py:66 +#: stock/models.py:63 #, fuzzy #| msgid "Stock Locations" msgid "Stock Location types" msgstr "仓储地点" -#: stock/models.py:92 +#: stock/models.py:89 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:124 stock/models.py:769 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" @@ -8678,12 +9004,12 @@ msgstr "仓储地点" msgid "Stock Locations" msgstr "仓储地点" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:157 stock/models.py:930 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:158 stock/models.py:931 msgid "Select Owner" msgstr "" @@ -8717,231 +9043,231 @@ msgstr "库存项已创建" msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:623 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:653 stock/serializers.py:223 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:670 #, fuzzy, python-brace-format #| msgid "Part type ('{pf}') must be {pe}" msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "商品类型 ('{pf}') 必须是 {pe}" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:680 stock/models.py:693 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:683 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:707 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:712 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:725 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:739 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:751 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:761 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:773 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:781 stock/serializers.py:1259 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:792 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:811 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:825 stock/serializers.py:1242 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:830 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:840 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:843 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:850 stock/templates/stock/item_base.html:363 #, fuzzy #| msgid "Issued By" msgid "Consumed By" msgstr "发布者" -#: stock/models.py:847 +#: stock/models.py:853 #, fuzzy #| msgid "BuildOrder to which this build is allocated" msgid "Build order which consumed this stock item" msgstr "此次生产匹配的订单" -#: stock/models.py:856 +#: stock/models.py:862 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:866 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:872 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:883 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:901 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:902 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:922 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:953 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1463 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1469 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1477 #, fuzzy, python-brace-format #| msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})" -#: stock/models.py:1477 +#: stock/models.py:1483 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1488 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1496 stock/serializers.py:455 msgid "Serial numbers already exist" msgstr "序列号已存在" -#: stock/models.py:1557 +#: stock/models.py:1563 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1567 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1570 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1573 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1576 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1579 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1586 stock/serializers.py:1148 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1590 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1598 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1603 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1807 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2264 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2323 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2329 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2344 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2348 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2355 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2363 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2367 msgid "Test notes" msgstr "" -#: stock/serializers.py:118 +#: stock/serializers.py:117 msgid "Serial number is too large" msgstr "" @@ -8949,169 +9275,175 @@ msgstr "" msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:328 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:390 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:403 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:410 msgid "Enter serial numbers for new items" msgstr "输入新项目的序列号" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:421 stock/serializers.py:1105 stock/serializers.py:1361 msgid "Destination stock location" msgstr "目标库存位置" -#: stock/serializers.py:424 +#: stock/serializers.py:428 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:438 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:493 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:500 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:501 #, fuzzy #| msgid "Enter quantity for build output" msgid "Enter the quantity of items to install" msgstr "输入生产产出数量" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:506 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 msgid "Add transaction note (optional)" msgstr "添加交易备注 (可选)" -#: stock/serializers.py:510 +#: stock/serializers.py:514 #, fuzzy #| msgid "Quantity must be a positive number" msgid "Quantity to install must be at least 1" msgstr "数量必须大于0" -#: stock/serializers.py:518 +#: stock/serializers.py:522 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:529 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:541 #, fuzzy #| msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgid "Quantity to install must not exceed available quantity" msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})" -#: stock/serializers.py:572 +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:611 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:624 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:641 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:672 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:709 #, fuzzy #| msgid "Selected stock item not found in BOM" msgid "Select stock items to change status" msgstr "在BOM中找不到选定的库存项" -#: stock/serializers.py:711 +#: stock/serializers.py:715 #, fuzzy #| msgid "Stock item created" msgid "No stock items selected" msgstr "库存项已创建" -#: stock/serializers.py:973 +#: stock/serializers.py:977 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:981 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:985 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1009 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1015 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1023 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1033 stock/serializers.py:1287 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1112 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1117 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1118 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1123 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1124 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1134 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1201 +#, fuzzy +#| msgid "Change" +msgid "No Change" +msgstr "更改" + +#: stock/serializers.py:1230 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1249 #, fuzzy #| msgid "Stock item created" msgid "Stock item status code" msgstr "库存项已创建" -#: stock/serializers.py:1265 +#: stock/serializers.py:1277 msgid "Stock transaction notes" msgstr "" @@ -9248,7 +9580,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2119 templates/navbar.html:38 msgid "Build" msgstr "生产" @@ -9316,7 +9648,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2376 msgid "No location set" msgstr "未设置仓储地点" @@ -9829,11 +10161,6 @@ msgstr "" msgid "Plugin information" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:86 -msgid "Version" -msgstr "" - #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" msgstr "" @@ -9991,7 +10318,7 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:543 templates/js/translated/helpers.js:105 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:245 users/models.py:399 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "删除" @@ -10020,7 +10347,7 @@ msgid "No project codes found" msgstr "无指定参数" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2224 msgid "group" msgstr "" @@ -10504,7 +10831,7 @@ msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 -#: templates/socialaccount/signup.html:20 +#: templates/socialaccount/signup.html:25 msgid "Sign Up" msgstr "" @@ -10584,7 +10911,7 @@ msgstr "" #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 -#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:32 msgid "Return to login page" msgstr "" @@ -10713,7 +11040,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2555 msgid "Required Quantity" msgstr "" @@ -11090,7 +11417,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2499 msgid "Variant stock allowed" msgstr "" @@ -11110,26 +11437,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2594 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2598 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2600 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2602 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2585 msgid "Consumable item" msgstr "" @@ -11161,7 +11488,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2484 msgid "Required Part" msgstr "" @@ -11173,412 +11500,412 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "是否确定取消生产?" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "生产订单未完成" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "生产订单完成" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "可追踪商品可以指定序列号" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "创建创建生产产出" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 #, fuzzy #| msgid "Manually allocate stock to build" msgid "Deallocate stock from build output" msgstr "手动分配存货进行生成" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 #, fuzzy #| msgid "Build output" msgid "Scrap build output" msgstr "生产产出" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 #, fuzzy #| msgid "Are you sure you wish to cancel this build?" msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "是否确定取消生产?" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 #, fuzzy #| msgid "Select Stock Items" msgid "Deallocate Stock Items" msgstr "选择库存项" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 #, fuzzy #| msgid "Delete any build outputs which have not been completed" msgid "Selected build outputs will be marked as complete" msgstr "删除所有未完成的生产产出" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 #, fuzzy #| msgid "Delete any build outputs which have not been completed" msgid "Selected build outputs will be marked as scrapped" msgstr "删除所有未完成的生产产出" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 #, fuzzy #| msgid "Delete any build outputs which have not been completed" msgid "Scrapped output are marked as rejected" msgstr "删除所有未完成的生产产出" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 #, fuzzy #| msgid "Stock item is over-allocated" msgid "Allocated stock items will no longer be available" msgstr "库存物品分配过度!" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 #, fuzzy #| msgid "Create Build Output" msgid "Scrap Build Outputs" msgstr "创建创建生产产出" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 #, fuzzy #| msgid "All selected supplier parts will be deleted" msgid "Selected build outputs will be deleted" msgstr "删除所有选定的供应商商品" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 #, fuzzy #| msgid "Build output is already completed" msgid "Build output data will be permanently deleted" msgstr "生产产出已完成" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 #, fuzzy #| msgid "All selected supplier parts will be deleted" msgid "Allocated stock items will be returned to stock" msgstr "删除所有选定的供应商商品" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2340 #, fuzzy #| msgid "Allocated Parts" msgid "Allocated Quantity" msgstr "已分配的部件" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "未指定仓储地点" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "已完成输出" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 #, fuzzy #| msgid "Complete outputs" msgid "Scrap outputs" msgstr "已完成输出" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "删除输出" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 #, fuzzy #| msgid "Build output" msgid "build output" msgstr "生产产出" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 #, fuzzy #| msgid "Build output" msgid "build outputs" msgstr "生产产出" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 #, fuzzy #| msgid "Build actions" msgid "Build output actions" msgstr "生产操作" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1292 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1385 #, fuzzy #| msgid "Allocated Parts" msgid "Allocated Lines" msgstr "已分配的部件" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1399 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1571 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "选择商品" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1572 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1635 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1712 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1713 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1727 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1755 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1766 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1839 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1936 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1937 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1939 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1940 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1941 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1972 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2078 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2113 templates/js/translated/build.js:2478 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2127 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2173 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2209 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "没有用户信息" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2385 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2386 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2401 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2413 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2454 #, fuzzy #| msgid "Build actions" msgid "build line" msgstr "生产操作" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2455 #, fuzzy #| msgid "Build actions" msgid "build lines" msgstr "生产操作" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2473 #, fuzzy #| msgid "Subcategories" msgid "No build lines found" msgstr "子类别" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2503 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "可追溯商品" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2538 #, fuzzy #| msgid "Quantity" msgid "Unit Quantity" msgstr "数量" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2590 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2641 #, fuzzy #| msgid "Minimum Stock" msgid "Consumable Item" msgstr "最低库存" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2646 #, fuzzy #| msgid "Stock Item" msgid "Tracked item" msgstr "库存项" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2653 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2658 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2662 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2666 #, fuzzy #| msgid "Confirm stock allocation" msgid "Remove stock allocation" @@ -11987,10 +12314,6 @@ msgstr "" msgid "No parts required for builds" msgstr "生产订单所需的库存" -#: templates/js/translated/index.js:130 -msgid "Allocated Stock" -msgstr "" - #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 #, fuzzy #| msgid "Select Stock Items" @@ -12453,6 +12776,12 @@ msgstr "设置商品类别" msgid "Set category" msgstr "设置类别" +#: templates/js/translated/part.js:2287 +#, fuzzy +#| msgid "Edit part" +msgid "part" +msgstr "编辑商品" + #: templates/js/translated/part.js:2288 #, fuzzy #| msgid "Parts" @@ -12973,7 +13302,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -13142,7 +13471,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -13158,7 +13487,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -13374,7 +13703,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:389 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "添加" @@ -13833,10 +14162,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "正在生产" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "显示正在生产的项目" @@ -14139,11 +14464,16 @@ msgstr "提供的数量无效" msgid "The selected SSO provider is invalid, or has not been correctly configured" msgstr "" -#: templates/socialaccount/signup.html:10 +#: templates/socialaccount/signup.html:11 #, python-format msgid "" -"You are about to use your %(provider_name)s account to login to\n" -"%(site_name)s.
As a final step, please complete the following form:" +"\n" +" You are about to use your %(provider_name)s account to login to %(site_name)s.\n" +" " +msgstr "" + +#: templates/socialaccount/signup.html:15 +msgid "As a final step, please complete the following form" msgstr "" #: templates/socialaccount/snippets/provider_list.html:26 @@ -14224,29 +14554,29 @@ msgstr "确定" msgid "No" msgstr "取消" -#: users/admin.py:103 +#: users/admin.py:104 msgid "Users" msgstr "用户" -#: users/admin.py:104 +#: users/admin.py:105 msgid "Select which users are assigned to this group" msgstr "选择分配给该组的用户" -#: users/admin.py:248 +#: users/admin.py:249 #, fuzzy #| msgid "The following users are members of multiple groups:" msgid "The following users are members of multiple groups" msgstr "以下用户是多个群组的成员:" -#: users/admin.py:282 +#: users/admin.py:283 msgid "Personal info" msgstr "个人资料" -#: users/admin.py:284 +#: users/admin.py:285 msgid "Permissions" msgstr "权限" -#: users/admin.py:287 +#: users/admin.py:288 msgid "Important dates" msgstr "重要日期" @@ -14300,38 +14630,43 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:372 +#: users/models.py:384 msgid "Permission set" msgstr "权限设置" -#: users/models.py:381 +#: users/models.py:393 msgid "Group" msgstr "群组" -#: users/models.py:385 +#: users/models.py:397 msgid "View" msgstr "视图" -#: users/models.py:385 +#: users/models.py:397 msgid "Permission to view items" msgstr "查看项目权限" -#: users/models.py:389 +#: users/models.py:401 msgid "Permission to add items" msgstr "添加项目权限" -#: users/models.py:393 +#: users/models.py:405 msgid "Change" msgstr "更改" -#: users/models.py:395 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "编辑项目权限" -#: users/models.py:401 +#: users/models.py:413 msgid "Permission to delete items" msgstr "删除项目权限" +#, fuzzy +#~| msgid "BOM Item" +#~ msgid "Bom Item" +#~ msgstr "BOM项" + #, fuzzy #~| msgid "Create new purchase order" #~ msgid "Invalid purchase order" @@ -14415,9 +14750,6 @@ msgstr "删除项目权限" #~ msgid "Delete Parts" #~ msgstr "删除商品" -#~ msgid "Options" -#~ msgstr "选项" - #~ msgid "Set Category" #~ msgstr "设置类别" @@ -14433,11 +14765,6 @@ msgstr "删除项目权限" #~ msgid "Print reports for selected items" #~ msgstr "删除项目权限" -#, fuzzy -#~| msgid "Allocate selected items" -#~ msgid "Print labels for selected items" -#~ msgstr "分配选定项目" - #, python-format #~ msgid "This Build Order is allocated to Sales Order %(link)s" #~ msgstr "此构建订单已分配给销售订单 %(link)s" diff --git a/InvenTree/locale/zh_hant/LC_MESSAGES/django.po b/InvenTree/locale/zh_hant/LC_MESSAGES/django.po index f24f579f03..87e88db451 100644 --- a/InvenTree/locale/zh_hant/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh_hant/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-16 11:14+0000\n" +"POT-Creation-Date: 2024-01-30 05:37+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,11 +18,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: InvenTree/api.py:164 +#: InvenTree/api.py:165 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:417 +#: InvenTree/api.py:418 msgid "User does not have permission to view this model" msgstr "" @@ -44,7 +44,7 @@ msgstr "" msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:89 +#: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" msgstr "" @@ -52,18 +52,18 @@ msgstr "" msgid "Enter date" msgstr "" -#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:433 -#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: InvenTree/fields.py:209 InvenTree/models.py:951 build/serializers.py:437 +#: build/serializers.py:515 build/templates/build/sidebar.html:21 #: company/models.py:826 company/templates/company/sidebar.html:37 #: order/models.py:1261 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3148 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:224 stock/models.py:2241 stock/models.py:2345 -#: stock/serializers.py:423 stock/serializers.py:576 stock/serializers.py:672 -#: stock/serializers.py:722 stock/serializers.py:1018 stock/serializers.py:1107 -#: stock/serializers.py:1264 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:224 stock/models.py:2260 stock/models.py:2364 +#: stock/serializers.py:428 stock/serializers.py:581 stock/serializers.py:677 +#: stock/serializers.py:727 stock/serializers.py:1023 stock/serializers.py:1112 +#: stock/serializers.py:1269 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 @@ -124,46 +124,46 @@ msgstr "" msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:386 +#: InvenTree/forms.py:394 msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:457 order/models.py:521 order/models.py:723 +#: InvenTree/helpers.py:459 order/models.py:521 order/models.py:723 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:465 +#: InvenTree/helpers.py:467 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:496 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:526 InvenTree/helpers.py:569 +#: InvenTree/helpers.py:528 InvenTree/helpers.py:571 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:557 +#: InvenTree/helpers.py:559 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:587 InvenTree/helpers.py:594 InvenTree/helpers.py:613 +#: InvenTree/helpers.py:589 InvenTree/helpers.py:596 InvenTree/helpers.py:615 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:623 +#: InvenTree/helpers.py:625 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:628 +#: InvenTree/helpers.py:630 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:746 +#: InvenTree/helpers.py:748 msgid "Remove HTML tags from this value" msgstr "" @@ -199,6 +199,134 @@ msgstr "" msgid "Supplied URL is not a valid image file" msgstr "" +#: InvenTree/locales.py:16 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/locales.py:17 +msgid "Czech" +msgstr "" + +#: InvenTree/locales.py:18 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "German" +msgstr "" + +#: InvenTree/locales.py:20 +msgid "Greek" +msgstr "" + +#: InvenTree/locales.py:21 +msgid "English" +msgstr "" + +#: InvenTree/locales.py:22 +msgid "Spanish" +msgstr "" + +#: InvenTree/locales.py:23 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/locales.py:24 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "French" +msgstr "" + +#: InvenTree/locales.py:27 +msgid "Hebrew" +msgstr "" + +#: InvenTree/locales.py:28 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hungarian" +msgstr "" + +#: InvenTree/locales.py:30 +msgid "Italian" +msgstr "" + +#: InvenTree/locales.py:31 +msgid "Japanese" +msgstr "" + +#: InvenTree/locales.py:32 +msgid "Korean" +msgstr "" + +#: InvenTree/locales.py:33 +msgid "Dutch" +msgstr "" + +#: InvenTree/locales.py:34 +msgid "Norwegian" +msgstr "" + +#: InvenTree/locales.py:35 +msgid "Polish" +msgstr "" + +#: InvenTree/locales.py:36 +msgid "Portuguese" +msgstr "" + +#: InvenTree/locales.py:37 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/locales.py:38 +msgid "Russian" +msgstr "" + +#: InvenTree/locales.py:39 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Swedish" +msgstr "" + +#: InvenTree/locales.py:43 +msgid "Thai" +msgstr "" + +#: InvenTree/locales.py:44 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:45 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:46 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Chinese (Traditional)" +msgstr "" + #: InvenTree/magic_login.py:27 #, python-brace-format msgid "[{site.name}] Log in to the app" @@ -255,7 +383,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:488 stock/models.py:2340 +#: InvenTree/models.py:488 stock/models.py:2359 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -267,7 +395,7 @@ msgstr "" #: InvenTree/models.py:497 common/models.py:2857 company/models.py:147 #: company/models.py:452 company/models.py:507 company/models.py:809 -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:273 order/models.py:1266 order/models.py:1665 #: part/admin.py:55 part/models.py:902 #: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 @@ -283,7 +411,7 @@ msgid "Link" msgstr "" #: InvenTree/models.py:498 build/models.py:307 part/models.py:903 -#: stock/models.py:811 +#: stock/models.py:814 msgid "Link to external URL" msgstr "" @@ -344,9 +472,10 @@ msgid "Invalid choice" msgstr "" #: InvenTree/models.py:823 common/models.py:2550 common/models.py:2943 -#: company/models.py:606 label/models.py:115 part/models.py:838 -#: part/models.py:3575 plugin/models.py:40 report/models.py:172 -#: stock/models.py:78 templates/InvenTree/settings/mixins/urls.html:13 +#: common/serializers.py:365 company/models.py:606 label/models.py:115 +#: part/models.py:838 part/models.py:3575 plugin/models.py:40 +#: report/models.py:172 stock/models.py:81 +#: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:80 #: templates/InvenTree/settings/plugin_settings.html:22 @@ -374,13 +503,13 @@ msgstr "" #: part/templates/part/part_scheduling.html:12 report/models.py:185 #: report/models.py:615 report/models.py:660 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:84 stock/templates/stock/location.html:125 +#: stock/admin.py:55 stock/models.py:87 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 #: templates/InvenTree/settings/plugin_settings.html:27 #: templates/InvenTree/settings/settings_staff_js.html:170 #: templates/InvenTree/settings/settings_staff_js.html:451 #: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 -#: templates/js/translated/build.js:2127 templates/js/translated/company.js:518 +#: templates/js/translated/build.js:2132 templates/js/translated/company.js:518 #: templates/js/translated/company.js:1320 #: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 @@ -399,7 +528,7 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:830 stock/models.py:85 +#: InvenTree/models.py:830 stock/models.py:88 msgid "Description (optional)" msgstr "" @@ -542,130 +671,6 @@ msgstr "" msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:837 -msgid "Bulgarian" -msgstr "" - -#: InvenTree/settings.py:838 -msgid "Czech" -msgstr "" - -#: InvenTree/settings.py:839 -msgid "Danish" -msgstr "" - -#: InvenTree/settings.py:840 -msgid "German" -msgstr "" - -#: InvenTree/settings.py:841 -msgid "Greek" -msgstr "" - -#: InvenTree/settings.py:842 -msgid "English" -msgstr "" - -#: InvenTree/settings.py:843 -msgid "Spanish" -msgstr "" - -#: InvenTree/settings.py:844 -msgid "Spanish (Mexican)" -msgstr "" - -#: InvenTree/settings.py:845 -msgid "Farsi / Persian" -msgstr "" - -#: InvenTree/settings.py:846 -msgid "Finnish" -msgstr "" - -#: InvenTree/settings.py:847 -msgid "French" -msgstr "" - -#: InvenTree/settings.py:848 -msgid "Hebrew" -msgstr "" - -#: InvenTree/settings.py:849 -msgid "Hindi" -msgstr "" - -#: InvenTree/settings.py:850 -msgid "Hungarian" -msgstr "" - -#: InvenTree/settings.py:851 -msgid "Italian" -msgstr "" - -#: InvenTree/settings.py:852 -msgid "Japanese" -msgstr "" - -#: InvenTree/settings.py:853 -msgid "Korean" -msgstr "" - -#: InvenTree/settings.py:854 -msgid "Dutch" -msgstr "" - -#: InvenTree/settings.py:855 -msgid "Norwegian" -msgstr "" - -#: InvenTree/settings.py:856 -msgid "Polish" -msgstr "" - -#: InvenTree/settings.py:857 -msgid "Portuguese" -msgstr "" - -#: InvenTree/settings.py:858 -msgid "Portuguese (Brazilian)" -msgstr "" - -#: InvenTree/settings.py:859 -msgid "Russian" -msgstr "" - -#: InvenTree/settings.py:860 -msgid "Slovenian" -msgstr "" - -#: InvenTree/settings.py:861 -msgid "Serbian" -msgstr "" - -#: InvenTree/settings.py:862 -msgid "Swedish" -msgstr "" - -#: InvenTree/settings.py:863 -msgid "Thai" -msgstr "" - -#: InvenTree/settings.py:864 -msgid "Turkish" -msgstr "" - -#: InvenTree/settings.py:865 -msgid "Vietnamese" -msgstr "" - -#: InvenTree/settings.py:866 -msgid "Chinese (Simplified)" -msgstr "" - -#: InvenTree/settings.py:867 -msgid "Chinese (Traditional)" -msgstr "" - #: InvenTree/status.py:66 part/serializers.py:1082 msgid "Background worker check failed" msgstr "" @@ -878,10 +883,6 @@ msgstr "" msgid "Unknown database" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:223 -msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" -msgstr "" - #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" @@ -931,7 +932,7 @@ msgid "Build must be cancelled before it can be deleted" msgstr "" #: build/api.py:281 part/models.py:3977 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2511 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2516 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:579 msgid "Consumable" @@ -939,7 +940,7 @@ msgstr "" #: build/api.py:282 part/models.py:3971 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 -#: templates/js/translated/build.js:2520 +#: templates/js/translated/build.js:2525 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:583 @@ -951,8 +952,8 @@ msgstr "" msgid "Tracked" msgstr "" -#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1731 -#: templates/js/translated/build.js:2611 +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1736 +#: templates/js/translated/build.js:2621 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:567 msgid "Allocated" @@ -962,7 +963,7 @@ msgstr "" #: company/templates/company/supplier_part.html:114 #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2552 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2557 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:226 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 @@ -977,7 +978,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:967 templates/js/translated/stock.js:2863 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" @@ -1005,14 +1006,14 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:172 order/models.py:422 order/models.py:876 -#: order/models.py:1254 order/models.py:1948 part/admin.py:416 +#: order/models.py:1254 order/models.py:1954 part/admin.py:416 #: part/models.py:3992 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2503 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2508 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 #: templates/js/translated/purchase_order.js:2062 #: templates/js/translated/return_order.js:729 @@ -1051,7 +1052,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:200 stock/serializers.py:606 +#: stock/serializers.py:201 stock/serializers.py:611 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1059,8 +1060,8 @@ msgstr "" #: templates/email/overdue_build_order.html:16 #: templates/js/translated/barcode.js:546 templates/js/translated/bom.js:632 #: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 -#: templates/js/translated/build.js:1299 templates/js/translated/build.js:1730 -#: templates/js/translated/build.js:2150 templates/js/translated/build.js:2323 +#: templates/js/translated/build.js:1304 templates/js/translated/build.js:1735 +#: templates/js/translated/build.js:2155 templates/js/translated/build.js:2328 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1106 #: templates/js/translated/company.js:1261 @@ -1096,8 +1097,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:219 build/serializers.py:942 -#: templates/js/translated/build.js:1718 +#: build/models.py:219 build/serializers.py:946 +#: templates/js/translated/build.js:1723 #: templates/js/translated/sales_order.js:1185 msgid "Source Location" msgstr "" @@ -1138,13 +1139,13 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:262 build/serializers.py:275 order/serializers.py:525 -#: stock/models.py:815 stock/serializers.py:1229 +#: build/models.py:262 build/serializers.py:279 order/serializers.py:525 +#: stock/models.py:818 stock/serializers.py:1234 #: templates/js/translated/purchase_order.js:1125 msgid "Batch Code" msgstr "" -#: build/models.py:266 build/serializers.py:276 +#: build/models.py:266 build/serializers.py:280 msgid "Batch code for this build output" msgstr "" @@ -1163,8 +1164,8 @@ msgstr "" msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:277 order/models.py:480 order/models.py:1993 -#: templates/js/translated/build.js:2235 +#: build/models.py:277 order/models.py:480 order/models.py:1999 +#: templates/js/translated/build.js:2240 msgid "Completion Date" msgstr "" @@ -1172,7 +1173,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:291 templates/js/translated/build.js:2195 +#: build/models.py:291 templates/js/translated/build.js:2200 msgid "Issued by" msgstr "" @@ -1188,7 +1189,7 @@ msgstr "" #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 -#: templates/js/translated/build.js:2207 +#: templates/js/translated/build.js:2212 #: templates/js/translated/purchase_order.js:1760 #: templates/js/translated/return_order.js:359 #: templates/js/translated/table_filters.js:527 @@ -1205,7 +1206,7 @@ msgstr "" #: order/templates/order/order_base.html:167 #: order/templates/order/return_order_base.html:145 #: order/templates/order/sales_order_base.html:180 -#: part/templates/part/part_base.html:383 stock/models.py:811 +#: part/templates/part/part_base.html:383 stock/models.py:814 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" @@ -1221,7 +1222,7 @@ msgstr "" #: build/models.py:321 common/models.py:126 order/admin.py:18 #: order/models.py:268 templates/InvenTree/settings/settings_staff_js.html:146 -#: templates/js/translated/build.js:2132 +#: templates/js/translated/build.js:2137 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/return_order.js:318 #: templates/js/translated/sales_order.js:806 @@ -1255,14 +1256,14 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:860 build/serializers.py:218 build/serializers.py:257 -#: build/serializers.py:815 order/models.py:518 order/serializers.py:393 +#: build/models.py:860 build/serializers.py:222 build/serializers.py:261 +#: build/serializers.py:819 order/models.py:518 order/serializers.py:393 #: order/serializers.py:520 part/serializers.py:1385 part/serializers.py:1749 -#: stock/models.py:656 stock/models.py:1466 stock/serializers.py:394 +#: stock/models.py:659 stock/models.py:1469 stock/serializers.py:399 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:865 build/serializers.py:223 +#: build/models.py:865 build/serializers.py:227 msgid "Quantity cannot be greater than the output quantity" msgstr "" @@ -1270,10 +1271,10 @@ msgstr "" msgid "Build object" msgstr "" -#: build/models.py:1293 build/models.py:1551 build/serializers.py:205 -#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/models.py:1293 build/models.py:1551 build/serializers.py:209 +#: build/serializers.py:246 build/templates/build/build_base.html:102 #: build/templates/build/detail.html:34 common/models.py:2360 -#: order/models.py:1237 order/models.py:1871 order/serializers.py:1282 +#: order/models.py:1237 order/models.py:1877 order/serializers.py:1282 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:415 #: part/forms.py:48 part/models.py:3135 part/models.py:3965 #: part/templates/part/part_pricing.html:16 @@ -1285,15 +1286,15 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:158 stock/serializers.py:385 +#: stock/admin.py:158 stock/serializers.py:390 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 #: templates/email/build_order_completed.html:18 #: templates/js/translated/barcode.js:548 templates/js/translated/bom.js:771 -#: templates/js/translated/bom.js:981 templates/js/translated/build.js:516 -#: templates/js/translated/build.js:732 templates/js/translated/build.js:1356 -#: templates/js/translated/build.js:1733 templates/js/translated/build.js:2345 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:737 templates/js/translated/build.js:1361 +#: templates/js/translated/build.js:1738 templates/js/translated/build.js:2350 #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:228 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 @@ -1330,11 +1331,11 @@ msgstr "" msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1393 order/models.py:1822 +#: build/models.py:1393 order/models.py:1828 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1399 order/models.py:1825 +#: build/models.py:1399 order/models.py:1831 msgid "Allocation quantity must be greater than zero" msgstr "" @@ -1346,12 +1347,12 @@ msgstr "" msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1538 build/serializers.py:795 order/serializers.py:1126 -#: order/serializers.py:1147 stock/serializers.py:488 stock/serializers.py:956 -#: stock/serializers.py:1068 stock/templates/stock/item_base.html:10 +#: build/models.py:1538 build/serializers.py:799 order/serializers.py:1126 +#: order/serializers.py:1147 stock/serializers.py:493 stock/serializers.py:961 +#: stock/serializers.py:1073 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 -#: templates/js/translated/build.js:1732 +#: templates/js/translated/build.js:1737 #: templates/js/translated/sales_order.js:301 #: templates/js/translated/sales_order.js:1198 #: templates/js/translated/sales_order.js:1499 @@ -1379,73 +1380,73 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:155 build/serializers.py:824 -#: templates/js/translated/build.js:1309 +#: build/serializers.py:159 build/serializers.py:828 +#: templates/js/translated/build.js:1314 msgid "Build Output" msgstr "" -#: build/serializers.py:167 +#: build/serializers.py:171 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:171 +#: build/serializers.py:175 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:175 +#: build/serializers.py:179 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:186 +#: build/serializers.py:190 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:206 build/serializers.py:243 +#: build/serializers.py:210 build/serializers.py:247 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:264 +#: build/serializers.py:268 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:267 +#: build/serializers.py:271 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:282 order/serializers.py:533 order/serializers.py:1286 -#: stock/serializers.py:405 templates/js/translated/purchase_order.js:1149 +#: build/serializers.py:286 order/serializers.py:533 order/serializers.py:1286 +#: stock/serializers.py:410 templates/js/translated/purchase_order.js:1149 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:283 +#: build/serializers.py:287 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:296 +#: build/serializers.py:300 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:297 +#: build/serializers.py:301 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:332 stock/api.py:940 +#: build/serializers.py:336 stock/api.py:950 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +#: build/serializers.py:387 build/serializers.py:449 build/serializers.py:527 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:509 +#: build/serializers.py:425 build/serializers.py:497 order/serializers.py:509 #: order/serializers.py:617 order/serializers.py:1622 part/serializers.py:1048 -#: stock/serializers.py:416 stock/serializers.py:571 stock/serializers.py:667 -#: stock/serializers.py:1100 stock/serializers.py:1348 +#: stock/serializers.py:421 stock/serializers.py:576 stock/serializers.py:672 +#: stock/serializers.py:1105 stock/serializers.py:1353 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 -#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:994 -#: templates/js/translated/build.js:2360 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2365 #: templates/js/translated/purchase_order.js:1174 #: templates/js/translated/purchase_order.js:1264 #: templates/js/translated/sales_order.js:1511 @@ -1458,32 +1459,32 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:426 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:432 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:429 +#: build/serializers.py:433 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:438 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:494 +#: build/serializers.py:498 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/serializers.py:504 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:900 -#: order/models.py:1972 order/serializers.py:541 stock/admin.py:163 -#: stock/serializers.py:718 stock/serializers.py:1236 +#: order/models.py:1978 order/serializers.py:541 stock/admin.py:163 +#: stock/serializers.py:723 stock/serializers.py:1241 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2179 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2184 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1719 #: templates/js/translated/return_order.js:331 @@ -1493,156 +1494,156 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:510 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:507 +#: build/serializers.py:511 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:576 +#: build/serializers.py:580 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:577 +#: build/serializers.py:581 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:583 +#: build/serializers.py:587 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:584 +#: build/serializers.py:588 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:611 +#: build/serializers.py:615 msgid "Not permitted" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:616 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:617 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:635 +#: build/serializers.py:639 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:637 +#: build/serializers.py:641 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:651 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:652 +#: build/serializers.py:656 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:657 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:663 templates/js/translated/build.js:310 +#: build/serializers.py:667 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:668 order/serializers.py:278 order/serializers.py:1189 +#: build/serializers.py:672 order/serializers.py:278 order/serializers.py:1189 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:673 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:679 templates/js/translated/build.js:314 +#: build/serializers.py:683 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:688 templates/js/translated/build.js:298 +#: build/serializers.py:692 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:718 +#: build/serializers.py:722 msgid "Build Line" msgstr "" -#: build/serializers.py:728 +#: build/serializers.py:732 msgid "Build output" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:740 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:772 +#: build/serializers.py:776 msgid "Build Line Item" msgstr "" -#: build/serializers.py:786 +#: build/serializers.py:790 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:801 stock/serializers.py:969 +#: build/serializers.py:805 stock/serializers.py:974 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:849 order/serializers.py:1180 +#: build/serializers.py:853 order/serializers.py:1180 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:855 +#: build/serializers.py:859 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:862 +#: build/serializers.py:866 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:886 order/serializers.py:1432 +#: build/serializers.py:890 order/serializers.py:1432 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:943 +#: build/serializers.py:947 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:951 +#: build/serializers.py:955 msgid "Exclude Location" msgstr "" -#: build/serializers.py:952 +#: build/serializers.py:956 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:957 +#: build/serializers.py:961 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:958 +#: build/serializers.py:962 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:963 +#: build/serializers.py:967 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:964 +#: build/serializers.py:968 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:969 +#: build/serializers.py:973 msgid "Optional Items" msgstr "" -#: build/serializers.py:970 +#: build/serializers.py:974 msgid "Allocate optional BOM items to build order" msgstr "" @@ -1776,7 +1777,7 @@ msgstr "" #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:192 #: report/templates/report/inventree_build_order_base.html:125 -#: templates/js/translated/build.js:2227 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2232 templates/js/translated/part.js:1830 #: templates/js/translated/purchase_order.js:1736 #: templates/js/translated/purchase_order.js:2144 #: templates/js/translated/return_order.js:347 @@ -1810,7 +1811,7 @@ msgstr "" #: build/templates/build/build_base.html:190 #: build/templates/build/detail.html:101 order/api.py:1408 order/models.py:1503 -#: order/models.py:1607 order/models.py:1759 +#: order/models.py:1613 order/models.py:1765 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 @@ -1832,7 +1833,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2144 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2149 msgid "Priority" msgstr "" @@ -1875,7 +1876,7 @@ msgstr "" #: build/templates/build/detail.html:80 stock/admin.py:161 #: stock/templates/stock/item_base.html:162 -#: templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:1372 #: templates/js/translated/model_renderers.js:233 #: templates/js/translated/purchase_order.js:1270 #: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 @@ -1889,7 +1890,7 @@ msgstr "" #: order/templates/order/order_base.html:173 #: order/templates/order/return_order_base.html:151 #: order/templates/order/sales_order_base.html:186 -#: templates/js/translated/build.js:2187 +#: templates/js/translated/build.js:2192 msgid "Created" msgstr "" @@ -1988,11 +1989,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:422 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:423 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -3425,7 +3426,7 @@ msgid "Price break quantity" msgstr "" #: common/models.py:2368 company/serializers.py:481 order/admin.py:42 -#: order/models.py:1311 order/models.py:2193 +#: order/models.py:1311 order/models.py:2199 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:741 @@ -3623,6 +3624,66 @@ msgstr "" msgid "Error raised by plugin" msgstr "" +#: common/serializers.py:328 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:334 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:340 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:346 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:361 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:361 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:363 +msgid "Lock" +msgstr "" + +#: common/serializers.py:363 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:365 +msgid "Task name" +msgstr "" + +#: common/serializers.py:367 +msgid "Function" +msgstr "" + +#: common/serializers.py:367 +msgid "Function name" +msgstr "" + +#: common/serializers.py:369 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:369 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:372 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:372 +msgid "Task keyword arguments" +msgstr "" + #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 @@ -3736,7 +3797,7 @@ msgstr "" #: company/models.py:268 company/models.py:377 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:723 +#: company/templates/company/company_base.html:12 stock/api.py:733 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" @@ -3828,8 +3889,8 @@ msgstr "" msgid "Link to address information (external)" msgstr "" -#: company/models.py:482 company/models.py:776 stock/models.py:743 -#: stock/serializers.py:199 stock/templates/stock/item_base.html:142 +#: company/models.py:482 company/models.py:776 stock/models.py:746 +#: stock/serializers.py:200 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3890,7 +3951,7 @@ msgstr "" #: company/models.py:613 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2332 templates/js/translated/company.js:1156 +#: stock/models.py:2351 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 #: templates/js/translated/stock.js:1502 msgid "Value" @@ -3967,7 +4028,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:501 +#: stock/serializers.py:506 msgid "Note" msgstr "" @@ -3980,7 +4041,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:842 company/templates/company/supplier_part.html:160 -#: stock/admin.py:222 stock/models.py:774 stock/serializers.py:1246 +#: stock/admin.py:222 stock/models.py:777 stock/serializers.py:1251 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2394 @@ -4084,9 +4145,9 @@ msgid "Delete image" msgstr "" #: company/templates/company/company_base.html:86 order/models.py:888 -#: order/models.py:1960 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:796 -#: stock/models.py:797 stock/serializers.py:1004 +#: order/models.py:1966 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:799 +#: stock/models.py:800 stock/serializers.py:1009 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4346,7 +4407,7 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:754 +#: company/templates/company/supplier_part.html:24 stock/models.py:757 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:761 @@ -4448,7 +4509,7 @@ msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:704 stock/templates/stock/location.html:170 +#: stock/serializers.py:709 stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4586,7 +4647,7 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1410 order/models.py:2160 order/models.py:2211 +#: order/api.py:1410 order/models.py:2166 order/models.py:2217 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 @@ -4623,7 +4684,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:273 order/models.py:1266 order/models.py:1659 +#: order/models.py:273 order/models.py:1266 order/models.py:1665 msgid "Link to external page" msgstr "" @@ -4672,15 +4733,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:473 order/models.py:1986 +#: order/models.py:473 order/models.py:1992 msgid "Issue Date" msgstr "" -#: order/models.py:474 order/models.py:1987 +#: order/models.py:474 order/models.py:1993 msgid "Date order was issued" msgstr "" -#: order/models.py:481 order/models.py:1994 +#: order/models.py:481 order/models.py:2000 msgid "Date order was completed" msgstr "" @@ -4696,15 +4757,15 @@ msgstr "" msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:912 order/models.py:1979 +#: order/models.py:912 order/models.py:1985 msgid "Customer Reference " msgstr "" -#: order/models.py:913 order/models.py:1980 +#: order/models.py:913 order/models.py:1986 msgid "Customer order reference code" msgstr "" -#: order/models.py:917 order/models.py:1613 +#: order/models.py:917 order/models.py:1619 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" @@ -4771,8 +4832,8 @@ msgid "deleted" msgstr "" #: order/models.py:1360 order/models.py:1456 order/models.py:1502 -#: order/models.py:1606 order/models.py:1758 order/models.py:2159 -#: order/models.py:2210 templates/js/translated/sales_order.js:1488 +#: order/models.py:1612 order/models.py:1764 order/models.py:2165 +#: order/models.py:2216 templates/js/translated/sales_order.js:1488 msgid "Order" msgstr "" @@ -4794,7 +4855,7 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1396 stock/models.py:915 stock/serializers.py:322 +#: order/models.py:1396 stock/models.py:918 stock/serializers.py:327 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2281 msgid "Purchase Price" @@ -4829,146 +4890,146 @@ msgstr "" msgid "Shipped quantity" msgstr "" -#: order/models.py:1614 +#: order/models.py:1620 msgid "Date of shipment" msgstr "" -#: order/models.py:1620 templates/js/translated/sales_order.js:1036 +#: order/models.py:1626 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" msgstr "" -#: order/models.py:1621 +#: order/models.py:1627 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1629 +#: order/models.py:1635 msgid "Checked By" msgstr "" -#: order/models.py:1630 +#: order/models.py:1636 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1637 order/models.py:1848 order/serializers.py:1297 +#: order/models.py:1643 order/models.py:1854 order/serializers.py:1297 #: order/serializers.py:1407 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1638 +#: order/models.py:1644 msgid "Shipment number" msgstr "" -#: order/models.py:1646 +#: order/models.py:1652 msgid "Tracking Number" msgstr "" -#: order/models.py:1647 +#: order/models.py:1653 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1654 +#: order/models.py:1660 msgid "Invoice Number" msgstr "" -#: order/models.py:1655 +#: order/models.py:1661 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1675 +#: order/models.py:1681 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1678 +#: order/models.py:1684 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1794 order/models.py:1796 +#: order/models.py:1800 order/models.py:1802 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1803 +#: order/models.py:1809 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1806 +#: order/models.py:1812 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1809 +#: order/models.py:1815 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1828 order/serializers.py:1174 +#: order/models.py:1834 order/serializers.py:1174 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1831 +#: order/models.py:1837 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1832 plugin/base/barcodes/api.py:481 +#: order/models.py:1838 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1840 +#: order/models.py:1846 msgid "Line" msgstr "" -#: order/models.py:1849 +#: order/models.py:1855 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1862 order/models.py:2167 +#: order/models.py:1868 order/models.py:2173 #: templates/js/translated/return_order.js:722 msgid "Item" msgstr "" -#: order/models.py:1863 +#: order/models.py:1869 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1872 +#: order/models.py:1878 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1949 +#: order/models.py:1955 msgid "Return Order reference" msgstr "" -#: order/models.py:1961 +#: order/models.py:1967 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1973 +#: order/models.py:1979 msgid "Return order status" msgstr "" -#: order/models.py:2152 +#: order/models.py:2158 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2168 +#: order/models.py:2174 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2174 +#: order/models.py:2180 msgid "Received Date" msgstr "" -#: order/models.py:2175 +#: order/models.py:2181 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2186 templates/js/translated/return_order.js:733 +#: order/models.py:2192 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2187 +#: order/models.py:2193 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2194 +#: order/models.py:2200 msgid "Cost associated with return or repair for this line item" msgstr "" @@ -5292,8 +5353,8 @@ 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/bom.js:133 templates/js/translated/build.js:524 -#: templates/js/translated/build.js:1616 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1621 #: templates/js/translated/purchase_order.js:706 #: templates/js/translated/purchase_order.js:1232 #: templates/js/translated/return_order.js:506 @@ -5579,7 +5640,7 @@ msgid "In Stock" msgstr "" #: part/admin.py:132 part/bom.py:173 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2603 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2609 #: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" @@ -5717,7 +5778,7 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:113 stock/models.py:164 templates/js/translated/stock.js:2743 +#: part/models.py:113 stock/models.py:167 templates/js/translated/stock.js:2743 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" @@ -5735,12 +5796,12 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:131 stock/models.py:91 stock/models.py:147 +#: part/models.py:131 stock/models.py:94 stock/models.py:150 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:132 stock/models.py:148 +#: part/models.py:132 stock/models.py:151 msgid "Icon (optional)" msgstr "" @@ -5809,7 +5870,7 @@ msgstr "" #: part/models.py:879 part/models.py:3359 part/models.py:3800 #: part/serializers.py:358 part/serializers.py:1038 -#: part/templates/part/part_base.html:260 stock/api.py:695 +#: part/templates/part/part_base.html:260 stock/api.py:705 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 #: templates/js/translated/part.js:2377 @@ -6269,7 +6330,7 @@ msgstr "" msgid "BOM level" msgstr "" -#: part/models.py:3860 part/models.py:4296 stock/api.py:707 +#: part/models.py:3860 part/models.py:4296 stock/api.py:717 msgid "BOM Item" msgstr "" @@ -6349,7 +6410,7 @@ msgstr "" msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4111 stock/models.py:640 +#: part/models.py:4111 stock/models.py:643 msgid "Quantity must be integer value for trackable parts" msgstr "" @@ -6393,7 +6454,7 @@ msgstr "" msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:328 +#: part/serializers.py:178 part/serializers.py:196 stock/serializers.py:333 msgid "Purchase currency of this stock item" msgstr "" @@ -7132,10 +7193,6 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2287 -msgid "part" -msgstr "" - #: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" @@ -7466,7 +7523,7 @@ msgstr "" msgid "Stock item does not match line item" msgstr "" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2579 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2585 #: templates/js/translated/sales_order.js:1917 msgid "Insufficient stock available" msgstr "" @@ -7800,7 +7857,7 @@ msgstr "" msgid "Method" msgstr "" -#: plugin/plugin.py:271 +#: plugin/plugin.py:279 msgid "No author found" msgstr "" @@ -8089,9 +8146,9 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:801 stock/templates/stock/item_base.html:311 -#: templates/js/translated/build.js:514 templates/js/translated/build.js:1354 -#: templates/js/translated/build.js:2343 +#: stock/models.py:804 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1359 +#: templates/js/translated/build.js:2348 #: templates/js/translated/model_renderers.js:222 #: templates/js/translated/return_order.js:540 #: templates/js/translated/return_order.js:724 @@ -8115,12 +8172,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2322 templates/js/translated/stock.js:1475 +#: stock/models.py:2341 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2326 +#: stock/models.py:2345 msgid "Result" msgstr "" @@ -8204,7 +8261,7 @@ msgstr "" msgid "Customer ID" msgstr "" -#: stock/admin.py:199 stock/models.py:781 +#: stock/admin.py:199 stock/models.py:784 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" @@ -8229,7 +8286,7 @@ msgstr "" msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:254 stock/models.py:875 +#: stock/admin.py:254 stock/models.py:878 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2200 users/models.py:113 msgid "Expiry Date" @@ -8239,317 +8296,317 @@ msgstr "" msgid "External Location" msgstr "" -#: stock/api.py:715 +#: stock/api.py:725 msgid "Part Tree" msgstr "" -#: stock/api.py:743 +#: stock/api.py:753 msgid "Expiry date before" msgstr "" -#: stock/api.py:747 +#: stock/api.py:757 msgid "Expiry date after" msgstr "" -#: stock/api.py:750 stock/templates/stock/item_base.html:439 +#: stock/api.py:760 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:836 +#: stock/api.py:846 msgid "Quantity is required" msgstr "" -#: stock/api.py:842 +#: stock/api.py:852 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:873 +#: stock/api.py:883 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:883 +#: stock/api.py:893 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:914 +#: stock/api.py:924 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:65 +#: stock/models.py:68 msgid "Stock Location type" msgstr "" -#: stock/models.py:66 +#: stock/models.py:69 msgid "Stock Location types" msgstr "" -#: stock/models.py:92 +#: stock/models.py:95 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:124 stock/models.py:763 +#: stock/models.py:127 stock/models.py:766 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:125 stock/templates/stock/location.html:179 +#: stock/models.py:128 stock/templates/stock/location.html:179 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:192 msgid "Stock Locations" msgstr "" -#: stock/models.py:157 stock/models.py:924 +#: stock/models.py:160 stock/models.py:927 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:158 stock/models.py:925 +#: stock/models.py:161 stock/models.py:928 msgid "Select Owner" msgstr "" -#: stock/models.py:166 +#: stock/models.py:169 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:173 templates/js/translated/stock.js:2752 +#: stock/models.py:176 templates/js/translated/stock.js:2752 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:174 +#: stock/models.py:177 msgid "This is an external stock location" msgstr "" -#: stock/models.py:180 templates/js/translated/stock.js:2761 +#: stock/models.py:183 templates/js/translated/stock.js:2761 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:184 +#: stock/models.py:187 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:253 +#: stock/models.py:256 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:617 +#: stock/models.py:620 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:647 stock/serializers.py:223 +#: stock/models.py:650 stock/serializers.py:224 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:664 +#: stock/models.py:667 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:674 stock/models.py:687 +#: stock/models.py:677 stock/models.py:690 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:677 +#: stock/models.py:680 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:701 +#: stock/models.py:704 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:706 +#: stock/models.py:709 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:719 +#: stock/models.py:722 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:733 +#: stock/models.py:736 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:745 +#: stock/models.py:748 msgid "Base part" msgstr "" -#: stock/models.py:755 +#: stock/models.py:758 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:767 +#: stock/models.py:770 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:775 stock/serializers.py:1247 +#: stock/models.py:778 stock/serializers.py:1252 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:786 +#: stock/models.py:789 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:805 +#: stock/models.py:808 msgid "Serial number for this item" msgstr "" -#: stock/models.py:819 stock/serializers.py:1230 +#: stock/models.py:822 stock/serializers.py:1235 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:824 +#: stock/models.py:827 msgid "Stock Quantity" msgstr "" -#: stock/models.py:834 +#: stock/models.py:837 msgid "Source Build" msgstr "" -#: stock/models.py:837 +#: stock/models.py:840 msgid "Build for this stock item" msgstr "" -#: stock/models.py:844 stock/templates/stock/item_base.html:363 +#: stock/models.py:847 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:847 +#: stock/models.py:850 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:856 +#: stock/models.py:859 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:860 +#: stock/models.py:863 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:866 +#: stock/models.py:869 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:877 +#: stock/models.py:880 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:895 +#: stock/models.py:898 msgid "Delete on deplete" msgstr "" -#: stock/models.py:896 +#: stock/models.py:899 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:916 +#: stock/models.py:919 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:947 +#: stock/models.py:950 msgid "Converted to part" msgstr "" -#: stock/models.py:1457 +#: stock/models.py:1460 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1463 +#: stock/models.py:1466 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1474 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1480 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1485 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1490 stock/serializers.py:451 +#: stock/models.py:1493 stock/serializers.py:456 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1557 +#: stock/models.py:1560 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1561 +#: stock/models.py:1564 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1564 +#: stock/models.py:1567 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1567 +#: stock/models.py:1570 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1570 +#: stock/models.py:1573 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1573 +#: stock/models.py:1576 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1580 stock/serializers.py:1144 +#: stock/models.py:1583 stock/serializers.py:1149 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1584 +#: stock/models.py:1587 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1592 +#: stock/models.py:1595 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1597 +#: stock/models.py:1600 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1785 +#: stock/models.py:1804 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2242 +#: stock/models.py:2261 msgid "Entry notes" msgstr "" -#: stock/models.py:2301 +#: stock/models.py:2320 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2307 +#: stock/models.py:2326 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2322 +#: stock/models.py:2341 msgid "Test name" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2345 msgid "Test result" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2352 msgid "Test output value" msgstr "" -#: stock/models.py:2341 +#: stock/models.py:2360 msgid "Test result attachment" msgstr "" -#: stock/models.py:2345 +#: stock/models.py:2364 msgid "Test notes" msgstr "" @@ -8557,161 +8614,161 @@ msgstr "" msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:215 +#: stock/serializers.py:216 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:324 +#: stock/serializers.py:329 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:386 +#: stock/serializers.py:391 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:399 +#: stock/serializers.py:404 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:406 +#: stock/serializers.py:411 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:417 stock/serializers.py:1101 stock/serializers.py:1349 +#: stock/serializers.py:422 stock/serializers.py:1106 stock/serializers.py:1354 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:424 +#: stock/serializers.py:429 msgid "Optional note field" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:439 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:489 +#: stock/serializers.py:494 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:496 +#: stock/serializers.py:501 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:497 +#: stock/serializers.py:502 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:502 stock/serializers.py:577 stock/serializers.py:673 -#: stock/serializers.py:723 +#: stock/serializers.py:507 stock/serializers.py:582 stock/serializers.py:678 +#: stock/serializers.py:728 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:515 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:518 +#: stock/serializers.py:523 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:525 +#: stock/serializers.py:530 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:537 +#: stock/serializers.py:542 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:572 +#: stock/serializers.py:577 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:612 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:637 +#: stock/serializers.py:642 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:668 +#: stock/serializers.py:673 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:705 +#: stock/serializers.py:710 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:711 +#: stock/serializers.py:716 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:973 +#: stock/serializers.py:978 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:977 +#: stock/serializers.py:982 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:981 +#: stock/serializers.py:986 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1005 +#: stock/serializers.py:1010 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1011 +#: stock/serializers.py:1016 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1019 +#: stock/serializers.py:1024 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1029 stock/serializers.py:1275 +#: stock/serializers.py:1034 stock/serializers.py:1280 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1108 +#: stock/serializers.py:1113 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1113 +#: stock/serializers.py:1118 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1114 +#: stock/serializers.py:1119 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1119 +#: stock/serializers.py:1124 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1120 +#: stock/serializers.py:1125 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1130 +#: stock/serializers.py:1135 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1218 +#: stock/serializers.py:1223 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1237 +#: stock/serializers.py:1242 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1265 +#: stock/serializers.py:1270 msgid "Stock transaction notes" msgstr "" @@ -8848,7 +8905,7 @@ msgid "Delete stock item" msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2111 templates/navbar.html:38 +#: templates/js/translated/build.js:2116 templates/navbar.html:38 msgid "Build" msgstr "" @@ -8914,7 +8971,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2368 +#: templates/js/translated/build.js:2373 msgid "No location set" msgstr "" @@ -9590,7 +9647,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2216 +#: templates/js/translated/build.js:2221 msgid "group" msgstr "" @@ -10255,7 +10312,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2547 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2552 msgid "Required Quantity" msgstr "" @@ -10624,7 +10681,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2491 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2496 msgid "Variant stock allowed" msgstr "" @@ -10644,26 +10701,26 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2585 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2591 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2589 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2595 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2591 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2597 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2593 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2599 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2576 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2582 msgid "Consumable item" msgstr "" @@ -10695,7 +10752,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2476 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2481 msgid "Required Part" msgstr "" @@ -10707,364 +10764,369 @@ msgstr "" msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:185 +#: templates/js/translated/build.js:190 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:222 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:232 +#: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:239 +#: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:291 +#: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:299 +#: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:304 +#: templates/js/translated/build.js:309 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:322 +#: templates/js/translated/build.js:327 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:363 templates/js/translated/stock.js:119 +#: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:365 templates/js/translated/stock.js:121 +#: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:374 +#: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:375 +#: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:383 +#: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:384 +#: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:396 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:422 +#: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:430 +#: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:439 +#: templates/js/translated/build.js:444 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:447 +#: templates/js/translated/build.js:452 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:454 +#: templates/js/translated/build.js:459 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:474 +#: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:492 +#: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:578 templates/js/translated/build.js:706 -#: templates/js/translated/build.js:832 +#: templates/js/translated/build.js:583 templates/js/translated/build.js:711 +#: templates/js/translated/build.js:837 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:579 templates/js/translated/build.js:707 -#: templates/js/translated/build.js:833 +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:593 +#: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:597 templates/js/translated/build.js:731 -#: templates/js/translated/build.js:855 +#: templates/js/translated/build.js:602 templates/js/translated/build.js:736 +#: templates/js/translated/build.js:860 msgid "Output" msgstr "" -#: templates/js/translated/build.js:625 +#: templates/js/translated/build.js:630 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:722 +#: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:724 +#: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:725 +#: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:726 +#: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:757 +#: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:847 +#: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:849 +#: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:850 +#: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:868 +#: templates/js/translated/build.js:873 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:955 +#: templates/js/translated/build.js:960 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:984 templates/js/translated/build.js:2332 +#: templates/js/translated/build.js:989 templates/js/translated/build.js:2337 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:998 +#: templates/js/translated/build.js:1003 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1020 +#: templates/js/translated/build.js:1025 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1038 +#: templates/js/translated/build.js:1043 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1056 +#: templates/js/translated/build.js:1061 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1110 +#: templates/js/translated/build.js:1115 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1111 +#: templates/js/translated/build.js:1116 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1120 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1284 +#: templates/js/translated/build.js:1289 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1377 +#: templates/js/translated/build.js:1382 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1391 +#: templates/js/translated/build.js:1396 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1563 +#: templates/js/translated/build.js:1568 #: templates/js/translated/purchase_order.js:630 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1564 +#: templates/js/translated/build.js:1569 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1627 +#: templates/js/translated/build.js:1632 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1704 +#: templates/js/translated/build.js:1709 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1705 +#: templates/js/translated/build.js:1710 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1719 +#: templates/js/translated/build.js:1724 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1747 +#: templates/js/translated/build.js:1752 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1758 +#: templates/js/translated/build.js:1763 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1831 +#: templates/js/translated/build.js:1836 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1933 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1929 +#: templates/js/translated/build.js:1934 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1931 +#: templates/js/translated/build.js:1936 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1932 +#: templates/js/translated/build.js:1937 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1933 +#: templates/js/translated/build.js:1938 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1964 +#: templates/js/translated/build.js:1969 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2070 +#: templates/js/translated/build.js:2075 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2105 templates/js/translated/build.js:2470 +#: templates/js/translated/build.js:2110 templates/js/translated/build.js:2475 #: templates/js/translated/forms.js:2151 templates/js/translated/forms.js:2167 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2119 +#: templates/js/translated/build.js:2124 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2165 +#: templates/js/translated/build.js:2170 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2201 templates/js/translated/stock.js:3013 +#: templates/js/translated/build.js:2206 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2377 +#: templates/js/translated/build.js:2382 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2383 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2393 +#: templates/js/translated/build.js:2398 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2405 +#: templates/js/translated/build.js:2410 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2446 +#: templates/js/translated/build.js:2451 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2447 +#: templates/js/translated/build.js:2452 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2465 +#: templates/js/translated/build.js:2470 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2495 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2500 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2530 +#: templates/js/translated/build.js:2535 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2581 +#: templates/js/translated/build.js:2587 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2628 +#: templates/js/translated/build.js:2613 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: templates/js/translated/build.js:2638 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2633 +#: templates/js/translated/build.js:2643 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2640 +#: templates/js/translated/build.js:2650 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2645 templates/js/translated/stock.js:1836 +#: templates/js/translated/build.js:2655 templates/js/translated/stock.js:1836 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2649 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2653 +#: templates/js/translated/build.js:2663 msgid "Remove stock allocation" msgstr "" @@ -11873,6 +11935,10 @@ msgstr "" msgid "Set category" msgstr "" +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + #: templates/js/translated/part.js:2288 msgid "parts" msgstr "" @@ -12345,7 +12411,7 @@ msgid "Receive Return Order Items" msgstr "" #: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2230 +#: templates/js/translated/sales_order.js:2231 msgid "No matching line items" msgstr "" @@ -12510,7 +12576,7 @@ msgid "Purchase stock" msgstr "" #: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2208 +#: templates/js/translated/sales_order.js:2209 msgid "Calculate price" msgstr "" @@ -12526,7 +12592,7 @@ msgstr "" msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2216 +#: templates/js/translated/sales_order.js:2217 msgid "Update Unit Price" msgstr "" @@ -13167,10 +13233,6 @@ msgstr "" msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:360 -msgid "In Production" -msgstr "" - #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" diff --git a/InvenTree/machine/__init__.py b/InvenTree/machine/__init__.py new file mode 100755 index 0000000000..719efa14e9 --- /dev/null +++ b/InvenTree/machine/__init__.py @@ -0,0 +1,4 @@ +from machine.machine_type import BaseDriver, BaseMachineType, MachineStatus +from machine.registry import registry + +__all__ = ['registry', 'BaseMachineType', 'BaseDriver', 'MachineStatus'] diff --git a/InvenTree/machine/admin.py b/InvenTree/machine/admin.py new file mode 100755 index 0000000000..3437c7a38a --- /dev/null +++ b/InvenTree/machine/admin.py @@ -0,0 +1,48 @@ +"""Django admin interface for the machine app.""" + +from django.contrib import admin +from django.http.request import HttpRequest + +from machine import models + + +class MachineSettingInline(admin.TabularInline): + """Inline admin class for MachineSetting.""" + + model = models.MachineSetting + + read_only_fields = ['key', 'config_type'] + + def has_add_permission(self, request, obj): + """The machine settings should not be meddled with manually.""" + return False + + +@admin.register(models.MachineConfig) +class MachineConfigAdmin(admin.ModelAdmin): + """Custom admin with restricted id fields.""" + + list_filter = ['active'] + list_display = [ + 'name', + 'machine_type', + 'driver', + 'initialized', + 'active', + 'no_errors', + 'get_machine_status', + ] + readonly_fields = [ + 'initialized', + 'is_driver_available', + 'get_admin_errors', + 'get_machine_status', + ] + inlines = [MachineSettingInline] + + def get_readonly_fields(self, request, obj): + """If update, don't allow changes on machine_type and driver.""" + if obj is not None: + return ['machine_type', 'driver', *self.readonly_fields] + + return self.readonly_fields diff --git a/InvenTree/machine/api.py b/InvenTree/machine/api.py new file mode 100644 index 0000000000..9448d2ea99 --- /dev/null +++ b/InvenTree/machine/api.py @@ -0,0 +1,251 @@ +"""JSON API for the machine app.""" + +from django.urls import include, path, re_path + +from drf_spectacular.utils import extend_schema +from rest_framework import permissions +from rest_framework.exceptions import NotFound +from rest_framework.response import Response +from rest_framework.views import APIView + +import machine.serializers as MachineSerializers +from InvenTree.filters import SEARCH_ORDER_FILTER +from InvenTree.mixins import ListCreateAPI, RetrieveUpdateAPI, RetrieveUpdateDestroyAPI +from machine import registry +from machine.models import MachineConfig, MachineSetting + + +class MachineList(ListCreateAPI): + """API endpoint for list of Machine objects. + + - GET: Return a list of all Machine objects + - POST: create a MachineConfig + """ + + queryset = MachineConfig.objects.all() + serializer_class = MachineSerializers.MachineConfigSerializer + + def get_serializer_class(self): + """Allow driver, machine_type fields on creation.""" + if self.request.method == 'POST': + return MachineSerializers.MachineConfigCreateSerializer + return super().get_serializer_class() + + filter_backends = SEARCH_ORDER_FILTER + + filterset_fields = ['machine_type', 'driver', 'active'] + + ordering_fields = ['name', 'machine_type', 'driver', 'active'] + + ordering = ['-active', 'machine_type'] + + search_fields = ['name'] + + +class MachineDetail(RetrieveUpdateDestroyAPI): + """API detail endpoint for MachineConfig object. + + - GET: return a single MachineConfig + - PUT: update a MachineConfig + - PATCH: partial update a MachineConfig + - DELETE: delete a MachineConfig + """ + + queryset = MachineConfig.objects.all() + serializer_class = MachineSerializers.MachineConfigSerializer + + +def get_machine(machine_pk): + """Get machine by pk. + + Raises: + NotFound: If machine is not found + + Returns: + BaseMachineType: The machine instance in the registry + """ + machine = registry.get_machine(machine_pk) + + if machine is None: + raise NotFound(detail=f"Machine '{machine_pk}' not found") + + return machine + + +class MachineSettingList(APIView): + """List endpoint for all machine related settings. + + - GET: return all settings for a machine config + """ + + permission_classes = [permissions.IsAuthenticated] + + @extend_schema( + responses={200: MachineSerializers.MachineSettingSerializer(many=True)} + ) + def get(self, request, pk): + """Return all settings for a machine config.""" + machine = get_machine(pk) + + all_settings = [] + + for settings, config_type in machine.setting_types: + settings_dict = MachineSetting.all_settings( + settings_definition=settings, + machine_config=machine.machine_config, + config_type=config_type, + ) + all_settings.extend(list(settings_dict.values())) + + results = MachineSerializers.MachineSettingSerializer( + all_settings, many=True + ).data + return Response(results) + + +class MachineSettingDetail(RetrieveUpdateAPI): + """Detail endpoint for a machine-specific setting. + + - GET: Get machine setting detail + - PUT: Update machine setting + - PATCH: Update machine setting + + (Note that these cannot be created or deleted via API) + """ + + lookup_field = 'key' + queryset = MachineSetting.objects.all() + serializer_class = MachineSerializers.MachineSettingSerializer + + def get_object(self): + """Lookup machine setting object, based on the URL.""" + pk = self.kwargs['pk'] + key = self.kwargs['key'] + config_type = MachineSetting.get_config_type(self.kwargs['config_type']) + + machine = get_machine(pk) + + setting_map = {d: s for s, d in machine.setting_types} + if key.upper() not in setting_map[config_type]: + raise NotFound( + detail=f"Machine '{machine.name}' has no {config_type.name} setting matching '{key.upper()}'" + ) + + return MachineSetting.get_setting_object( + key, machine_config=machine.machine_config, config_type=config_type + ) + + +class MachineRestart(APIView): + """Endpoint for performing a machine restart. + + - POST: restart machine by pk + """ + + permission_classes = [permissions.IsAuthenticated] + + @extend_schema(responses={200: MachineSerializers.MachineRestartSerializer()}) + def post(self, request, pk): + """Restart machine by pk.""" + machine = get_machine(pk) + registry.restart_machine(machine) + + result = MachineSerializers.MachineRestartSerializer({'ok': True}).data + return Response(result) + + +class MachineTypesList(APIView): + """List API Endpoint for all discovered machine types. + + - GET: List all machine types + """ + + permission_classes = [permissions.IsAuthenticated] + + @extend_schema(responses={200: MachineSerializers.MachineTypeSerializer(many=True)}) + def get(self, request): + """List all machine types.""" + machine_types = list(registry.machine_types.values()) + results = MachineSerializers.MachineTypeSerializer( + machine_types, many=True + ).data + return Response(results) + + +class MachineDriverList(APIView): + """List API Endpoint for all discovered machine drivers. + + - GET: List all machine drivers + """ + + permission_classes = [permissions.IsAuthenticated] + + @extend_schema( + responses={200: MachineSerializers.MachineDriverSerializer(many=True)} + ) + def get(self, request): + """List all machine drivers.""" + drivers = registry.drivers.values() + if machine_type := request.query_params.get('machine_type', None): + drivers = filter(lambda d: d.machine_type == machine_type, drivers) + + results = MachineSerializers.MachineDriverSerializer( + list(drivers), many=True + ).data + return Response(results) + + +class RegistryStatusView(APIView): + """Status API endpoint for the machine registry. + + - GET: Provide status data for the machine registry + """ + + permission_classes = [permissions.IsAuthenticated] + + serializer_class = MachineSerializers.MachineRegistryStatusSerializer + + @extend_schema( + responses={200: MachineSerializers.MachineRegistryStatusSerializer()} + ) + def get(self, request): + """Provide status data for the machine registry.""" + result = MachineSerializers.MachineRegistryStatusSerializer({ + 'registry_errors': [{'message': str(error)} for error in registry.errors] + }).data + + return Response(result) + + +machine_api_urls = [ + # machine types + path('types/', MachineTypesList.as_view(), name='api-machine-types'), + # machine drivers + path('drivers/', MachineDriverList.as_view(), name='api-machine-drivers'), + # registry status + path('status/', RegistryStatusView.as_view(), name='api-machine-registry-status'), + # detail views for a single Machine + path( + '/', + include([ + # settings + path( + 'settings/', + include([ + re_path( + r'^(?PM|D)/(?P\w+)/', + MachineSettingDetail.as_view(), + name='api-machine-settings-detail', + ), + path('', MachineSettingList.as_view(), name='api-machine-settings'), + ]), + ), + # restart + path('restart/', MachineRestart.as_view(), name='api-machine-restart'), + # detail + path('', MachineDetail.as_view(), name='api-machine-detail'), + ]), + ), + # machine list and create + path('', MachineList.as_view(), name='api-machine-list'), +] diff --git a/InvenTree/machine/apps.py b/InvenTree/machine/apps.py new file mode 100755 index 0000000000..3264ac6319 --- /dev/null +++ b/InvenTree/machine/apps.py @@ -0,0 +1,43 @@ +"""Django machine app config.""" + +import logging + +from django.apps import AppConfig +from django.db.utils import OperationalError, ProgrammingError + +from InvenTree.ready import ( + canAppAccessDatabase, + isImportingData, + isInMainThread, + isPluginRegistryLoaded, + isRunningMigrations, +) + +logger = logging.getLogger('inventree') + + +class MachineConfig(AppConfig): + """AppConfig class for the machine app.""" + + name = 'machine' + + def ready(self) -> None: + """Initialization method for the machine app.""" + if ( + not canAppAccessDatabase(allow_test=True) + or not isPluginRegistryLoaded() + or not isInMainThread() + or isRunningMigrations() + or isImportingData() + ): + logger.debug('Machine app: Skipping machine loading sequence') + return + + from machine import registry + + try: + logger.info('Loading InvenTree machines') + registry.initialize() + except (OperationalError, ProgrammingError): + # Database might not yet be ready + logger.warn('Database was not ready for initializing machines') diff --git a/InvenTree/machine/machine_type.py b/InvenTree/machine/machine_type.py new file mode 100644 index 0000000000..7be615a66e --- /dev/null +++ b/InvenTree/machine/machine_type.py @@ -0,0 +1,375 @@ +"""Base machine type/base driver.""" + +from typing import TYPE_CHECKING, Any, Literal, Union + +from generic.states import StatusCode +from InvenTree.helpers_mixin import ClassProviderMixin, ClassValidationMixin + +# Import only for typechecking, otherwise this throws cyclic import errors +if TYPE_CHECKING: + from common.models import SettingsKeyType + from machine.models import MachineConfig +else: # pragma: no cover + + class MachineConfig: + """Only used if not typechecking currently.""" + + class SettingsKeyType: + """Only used if not typechecking currently.""" + + +class MachineStatus(StatusCode): + """Base class for representing a set of machine status codes. + + Use enum syntax to define the status codes, e.g. + ```python + CONNECTED = 200, _("Connected"), 'success' + ``` + + The values of the status can be accessed with `MachineStatus.CONNECTED.value`. + + Additionally there are helpers to access all additional attributes `text`, `label`, `color`. + + Available colors: + primary, secondary, warning, danger, success, warning, info + + Status code ranges: + ``` + 1XX - Everything fine + 2XX - Warnings (e.g. ink is about to become empty) + 3XX - Something wrong with the machine (e.g. no labels are remaining on the spool) + 4XX - Something wrong with the driver (e.g. cannot connect to the machine) + 5XX - Unknown issues + ``` + """ + + +class BaseDriver(ClassValidationMixin, ClassProviderMixin): + """Base class for all machine drivers. + + Attributes: + SLUG: Slug string for identifying the driver in format /[a-z-]+/ (required) + NAME: User friendly name for displaying (required) + DESCRIPTION: Description of what this driver does (required) + + MACHINE_SETTINGS: Driver specific settings dict + """ + + SLUG: str + NAME: str + DESCRIPTION: str + + MACHINE_SETTINGS: dict[str, SettingsKeyType] + + machine_type: str + + required_attributes = ['SLUG', 'NAME', 'DESCRIPTION', 'machine_type'] + + def __init__(self) -> None: + """Base driver __init__ method.""" + super().__init__() + + self.errors: list[Union[str, Exception]] = [] + + def init_driver(self): + """This method gets called after all machines are created and can be used to initialize the driver. + + After the driver is initialized, the self.init_machine function is + called for each machine associated with that driver. + """ + + def init_machine(self, machine: 'BaseMachineType'): + """This method gets called for each active machine using that driver while initialization. + + If this function raises an Exception, it gets added to the machine.errors + list and the machine does not initialize successfully. + + Arguments: + machine: Machine instance + """ + + def update_machine( + self, old_machine_state: dict[str, Any], machine: 'BaseMachineType' + ): + """This method gets called for each update of a machine. + + Note: + machine.restart_required can be set to True here if the machine needs a manual restart to apply the changes + + Arguments: + old_machine_state: Dict holding the old machine state before update + machine: Machine instance with the new state + """ + + def restart_machine(self, machine: 'BaseMachineType'): + """This method gets called on manual machine restart e.g. by using the restart machine action in the Admin Center. + + Note: + `machine.restart_required` gets set to False again before this function is called + + Arguments: + machine: Machine instance + """ + + def get_machines(self, **kwargs): + """Return all machines using this driver (By default only initialized machines). + + Keyword Arguments: + name (str): Machine name + machine_type (BaseMachineType): Machine type definition (class) + initialized (bool | None): use None to get all machines (default: True) + active (bool): machine needs to be active + base_driver (BaseDriver): base driver (class) + """ + from machine import registry + + kwargs.pop('driver', None) + + return registry.get_machines(driver=self, **kwargs) + + def handle_error(self, error: Union[Exception, str]): + """Handle driver error. + + Arguments: + error: Exception or string + """ + self.errors.append(error) + + +class BaseMachineType(ClassValidationMixin, ClassProviderMixin): + """Base class for machine types. + + Attributes: + SLUG: Slug string for identifying the machine type in format /[a-z-]+/ (required) + NAME: User friendly name for displaying (required) + DESCRIPTION: Description of what this machine type can do (required) + + base_driver: Reference to the base driver for this machine type + + MACHINE_SETTINGS: Machine type specific settings dict (optional) + + MACHINE_STATUS: Set of status codes this machine type can have + default_machine_status: Default machine status with which this machine gets initialized + """ + + SLUG: str + NAME: str + DESCRIPTION: str + + base_driver: type[BaseDriver] + + MACHINE_SETTINGS: dict[str, SettingsKeyType] + + MACHINE_STATUS: type[MachineStatus] + default_machine_status: MachineStatus + + # used by the ClassValidationMixin + required_attributes = [ + 'SLUG', + 'NAME', + 'DESCRIPTION', + 'base_driver', + 'MACHINE_STATUS', + 'default_machine_status', + ] + + def __init__(self, machine_config: MachineConfig) -> None: + """Base machine type __init__ function.""" + from machine import registry + from machine.models import MachineSetting + + self.errors: list[Union[str, Exception]] = [] + self.initialized = False + + self.status = self.default_machine_status + self.status_text: str = '' + + self.pk = machine_config.pk + self.driver = registry.get_driver_instance(machine_config.driver) + + if not self.driver: + self.handle_error(f"Driver '{machine_config.driver}' not found") + if self.driver and not isinstance(self.driver, self.base_driver): + self.handle_error( + f"'{self.driver.NAME}' is incompatible with machine type '{self.NAME}'" + ) + + self.machine_settings: dict[str, SettingsKeyType] = getattr( + self, 'MACHINE_SETTINGS', {} + ) + self.driver_settings: dict[str, SettingsKeyType] = getattr( + self.driver, 'MACHINE_SETTINGS', {} + ) + + self.setting_types: list[ + tuple[dict[str, SettingsKeyType], MachineSetting.ConfigType] + ] = [ + (self.machine_settings, MachineSetting.ConfigType.MACHINE), + (self.driver_settings, MachineSetting.ConfigType.DRIVER), + ] + + self.restart_required = False + + def __str__(self): + """String representation of a machine.""" + return f'{self.name}' + + def __repr__(self): + """Python representation of a machine.""" + return f'<{self.__class__.__name__}: {self.name}>' + + # --- properties + @property + def machine_config(self): + """Machine_config property which is a reference to the database entry.""" + # always fetch the machine_config if needed to ensure we get the newest reference + from .models import MachineConfig + + return MachineConfig.objects.get(pk=self.pk) + + @property + def name(self): + """The machines name.""" + return self.machine_config.name + + @property + def active(self): + """The machines active status.""" + return self.machine_config.active + + # --- hook functions + def initialize(self): + """Machine initialization function, gets called after all machines are loaded.""" + if self.driver is None: + return + + # check if all required settings are defined before continue with init process + settings_valid, missing_settings = self.check_settings() + if not settings_valid: + error_parts = [] + for config_type, missing in missing_settings.items(): + if len(missing) > 0: + error_parts.append( + f'{config_type.name} settings: ' + ', '.join(missing) + ) + self.handle_error(f"Missing {' and '.join(error_parts)}") + return + + try: + self.driver.init_machine(self) + self.initialized = True + except Exception as e: + self.handle_error(e) + + def update(self, old_state: dict[str, Any]): + """Machine update function, gets called if the machine itself changes or their settings. + + Arguments: + old_state: Dict holding the old machine state before update + """ + if self.driver is None: + return + + try: + self.driver.update_machine(old_state, self) + except Exception as e: + self.handle_error(e) + + def restart(self): + """Machine restart function, can be used to manually restart the machine from the admin ui.""" + if self.driver is None: + return + + try: + self.restart_required = False + self.driver.restart_machine(self) + except Exception as e: + self.handle_error(e) + + # --- helper functions + def handle_error(self, error: Union[Exception, str]): + """Helper function for capturing errors with the machine. + + Arguments: + error: Exception or string + """ + self.errors.append(error) + + def get_setting( + self, key: str, config_type_str: Literal['M', 'D'], cache: bool = False + ): + """Return the 'value' of the setting associated with this machine. + + Arguments: + key: The 'name' of the setting value to be retrieved + config_type_str: Either "M" (machine scoped settings) or "D" (driver scoped settings) + cache: Whether to use RAM cached value (default = False) + """ + from machine.models import MachineSetting + + config_type = MachineSetting.get_config_type(config_type_str) + return MachineSetting.get_setting( + key, + machine_config=self.machine_config, + config_type=config_type, + cache=cache, + ) + + def set_setting(self, key: str, config_type_str: Literal['M', 'D'], value: Any): + """Set plugin setting value by key. + + Arguments: + key: The 'name' of the setting to set + config_type_str: Either "M" (machine scoped settings) or "D" (driver scoped settings) + value: The 'value' of the setting + """ + from machine.models import MachineSetting + + config_type = MachineSetting.get_config_type(config_type_str) + MachineSetting.set_setting( + key, + value, + None, + machine_config=self.machine_config, + config_type=config_type, + ) + + def check_settings(self): + """Check if all required settings for this machine are defined. + + Returns: + is_valid: Are all required settings defined + missing_settings: dict[ConfigType, list[str]] of all settings that are missing (empty if is_valid is 'True') + """ + from machine.models import MachineSetting + + missing_settings: dict[MachineSetting.ConfigType, list[str]] = {} + for settings, config_type in self.setting_types: + is_valid, missing = MachineSetting.check_all_settings( + settings_definition=settings, + machine_config=self.machine_config, + config_type=config_type, + ) + missing_settings[config_type] = missing + + return all( + len(missing) == 0 for missing in missing_settings.values() + ), missing_settings + + def set_status(self, status: MachineStatus): + """Set the machine status code. There are predefined ones for each MachineType. + + Import the MachineType to access it's `MACHINE_STATUS` enum. + + Arguments: + status: The new MachineStatus code to set + """ + self.status = status + + def set_status_text(self, status_text: str): + """Set the machine status text. It can be any arbitrary text. + + Arguments: + status_text: The new status text to set + """ + self.status_text = status_text diff --git a/InvenTree/machine/machine_types/__init__.py b/InvenTree/machine/machine_types/__init__.py new file mode 100644 index 0000000000..6fe810f21a --- /dev/null +++ b/InvenTree/machine/machine_types/__init__.py @@ -0,0 +1,11 @@ +from machine.machine_types.label_printer import ( + LabelPrinterBaseDriver, + LabelPrinterMachine, +) + +__all__ = [ + # machine types + 'LabelPrinterMachine', + # base drivers + 'LabelPrinterBaseDriver', +] diff --git a/InvenTree/machine/machine_types/label_printer.py b/InvenTree/machine/machine_types/label_printer.py new file mode 100644 index 0000000000..bfbff04a45 --- /dev/null +++ b/InvenTree/machine/machine_types/label_printer.py @@ -0,0 +1,269 @@ +"""Label printing machine type.""" + +from typing import Union, cast + +from django.db.models.query import QuerySet +from django.http import HttpResponse, JsonResponse +from django.utils.translation import gettext_lazy as _ + +from PIL.Image import Image +from rest_framework import serializers +from rest_framework.request import Request + +from label.models import LabelTemplate +from machine.machine_type import BaseDriver, BaseMachineType, MachineStatus +from plugin import registry as plg_registry +from plugin.base.label.mixins import LabelItemType, LabelPrintingMixin +from stock.models import StockLocation + + +class LabelPrinterBaseDriver(BaseDriver): + """Base driver for label printer machines. + + Attributes: + USE_BACKGROUND_WORKER (bool): If True, the `print_label()` and `print_labels()` methods will be run in a background worker (default: True) + """ + + machine_type = 'label-printer' + + USE_BACKGROUND_WORKER = True + + def print_label( + self, + machine: 'LabelPrinterMachine', + label: LabelTemplate, + item: LabelItemType, + request: Request, + **kwargs, + ) -> None: + """Print a single label with the provided template and item. + + Arguments: + machine: The LabelPrintingMachine instance that should be used for printing + label: The LabelTemplate object to use for printing + item: The database item to print (e.g. StockItem instance) + request: The HTTP request object which triggered this print job + + Keyword Arguments: + printing_options (dict): The printing options set for this print job defined in the PrintingOptionsSerializer + by default the following options are available: + - copies: number of copies to print for the label + + Note that the supplied args/kwargs may be different if the driver overrides the print_labels() method. + """ + + def print_labels( + self, + machine: 'LabelPrinterMachine', + label: LabelTemplate, + items: QuerySet[LabelItemType], + request: Request, + **kwargs, + ) -> Union[None, JsonResponse]: + """Print one or more labels with the provided template and items. + + Arguments: + machine: The LabelPrintingMachine instance that should be used for printing + label: The LabelTemplate object to use for printing + items: The list of database items to print (e.g. StockItem instances) + request: The HTTP request object which triggered this print job + + Keyword Arguments: + printing_options (dict): The printing options set for this print job defined in the PrintingOptionsSerializer + by default the following options are available: + - copies: number of copies to print for each label + + Returns: + If `USE_BACKGROUND_WORKER=False`, a JsonResponse object which indicates outcome to the user, otherwise None + + The default implementation simply calls print_label() for each label, producing multiple single label output "jobs" + but this can be overridden by the particular driver. + """ + for item in items: + self.print_label(machine, label, item, request, **kwargs) + + def get_printers( + self, label: LabelTemplate, items: QuerySet[LabelItemType], **kwargs + ) -> list['LabelPrinterMachine']: + """Get all printers that would be available to print this job. + + By default all printers that are initialized using this driver are returned. + + Arguments: + label: The LabelTemplate object to use for printing + items: The lost of database items to print (e.g. StockItem instances) + + Keyword Arguments: + request (Request): The django request used to make the get printers request + """ + return cast(list['LabelPrinterMachine'], self.get_machines()) + + def get_printing_options_serializer( + self, request: Request, *args, **kwargs + ) -> 'LabelPrinterBaseDriver.PrintingOptionsSerializer': + """Return a serializer class instance with dynamic printing options. + + Arguments: + request: The request made to print a label or interfering the available serializer fields via an OPTIONS request + + Note: + `*args`, `**kwargs` needs to be passed to the serializer instance + + Returns: + A class instance of a DRF serializer class, by default this an instance of self.PrintingOptionsSerializer using the *args, **kwargs if existing for this driver + """ + return self.PrintingOptionsSerializer(*args, **kwargs) # type: ignore + + # --- helper functions + @property + def machine_plugin(self) -> LabelPrintingMixin: + """Returns the builtin machine label printing plugin that manages printing through machines.""" + plg = plg_registry.get_plugin('inventreelabelmachine') + return cast(LabelPrintingMixin, plg) + + def render_to_pdf( + self, label: LabelTemplate, item: LabelItemType, request: Request, **kwargs + ) -> HttpResponse: + """Helper method to render a label to PDF format for a specific item. + + Arguments: + label: The LabelTemplate object to render + item: The item to render the label with + request: The HTTP request object which triggered this print job + """ + label.object_to_print = item + response = self.machine_plugin.render_to_pdf(label, request, **kwargs) + label.object_to_print = None + return response + + def render_to_pdf_data( + self, label: LabelTemplate, item: LabelItemType, request: Request, **kwargs + ) -> bytes: + """Helper method to render a label to PDF and return it as bytes for a specific item. + + Arguments: + label: The LabelTemplate object to render + item: The item to render the label with + request: The HTTP request object which triggered this print job + """ + return ( + self.render_to_pdf(label, item, request, **kwargs) + .get_document() # type: ignore + .write_pdf() + ) + + def render_to_html( + self, label: LabelTemplate, item: LabelItemType, request: Request, **kwargs + ) -> str: + """Helper method to render a label to HTML format for a specific item. + + Arguments: + label: The LabelTemplate object to render + item: The item to render the label with + request: The HTTP request object which triggered this print job + """ + label.object_to_print = item + html = self.machine_plugin.render_to_html(label, request, **kwargs) + label.object_to_print = None + return html + + def render_to_png( + self, label: LabelTemplate, item: LabelItemType, request: Request, **kwargs + ) -> Image: + """Helper method to render a label to PNG format for a specific item. + + Arguments: + label: The LabelTemplate object to render + item: The item to render the label with + request: The HTTP request object which triggered this print job + + Keyword Arguments: + pdf_data (bytes): The pdf document as bytes (optional) + dpi (int): The dpi used to render the image (optional) + use_cairo (bool): Whether to use the pdftocairo backend for rendering which provides better results in tests, + see [#6488](https://github.com/inventree/InvenTree/pull/6488) for details. If False, pdftoppm is used (default: True) + pdf2image_kwargs (dict): Additional keyword arguments to pass to the + [`pdf2image.convert_from_bytes`](https://pdf2image.readthedocs.io/en/latest/reference.html#pdf2image.pdf2image.convert_from_bytes) method (optional) + """ + label.object_to_print = item + png = self.machine_plugin.render_to_png(label, request, **kwargs) + label.object_to_print = None + return png + + required_overrides = [[print_label, print_labels]] + + class PrintingOptionsSerializer(serializers.Serializer): + """Printing options serializer that implements common options. + + This can be overridden by the driver to implement custom options, but the driver should always extend this class. + + Example: + This example shows how to extend the default serializer and add a new option: + ```py + class MyDriver(LabelPrinterBaseDriver): + # ... + + class PrintingOptionsSerializer(LabelPrinterBaseDriver.PrintingOptionsSerializer): + auto_cut = serializers.BooleanField( + default=True, + label=_('Auto cut'), + help_text=_('Automatically cut the label after printing'), + ) + ``` + """ + + copies = serializers.IntegerField( + default=1, + label=_('Copies'), + help_text=_('Number of copies to print for each label'), + ) + + +class LabelPrinterStatus(MachineStatus): + """Label printer status codes. + + Attributes: + CONNECTED: The printer is connected and ready to print + UNKNOWN: The printer status is unknown (e.g. there is no active connection to the printer) + PRINTING: The printer is currently printing a label + NO_MEDIA: The printer is out of media (e.g. the label spool is empty) + DISCONNECTED: The driver cannot establish a connection to the printer + """ + + CONNECTED = 100, _('Connected'), 'success' + UNKNOWN = 101, _('Unknown'), 'secondary' + PRINTING = 110, _('Printing'), 'primary' + NO_MEDIA = 301, _('No media'), 'warning' + DISCONNECTED = 400, _('Disconnected'), 'danger' + + +class LabelPrinterMachine(BaseMachineType): + """Label printer machine type, is a direct integration to print labels for various items.""" + + SLUG = 'label-printer' + NAME = _('Label Printer') + DESCRIPTION = _('Directly print labels for various items.') + + base_driver = LabelPrinterBaseDriver + + MACHINE_SETTINGS = { + 'LOCATION': { + 'name': _('Printer Location'), + 'description': _('Scope the printer to a specific location'), + 'model': 'stock.stocklocation', + } + } + + MACHINE_STATUS = LabelPrinterStatus + + default_machine_status = LabelPrinterStatus.UNKNOWN + + @property + def location(self): + """Access the machines location instance using this property.""" + location_pk = self.get_setting('LOCATION', 'M') + + if not location_pk: + return None + + return StockLocation.objects.get(pk=location_pk) diff --git a/InvenTree/machine/migrations/0001_initial.py b/InvenTree/machine/migrations/0001_initial.py new file mode 100644 index 0000000000..cebcd8365d --- /dev/null +++ b/InvenTree/machine/migrations/0001_initial.py @@ -0,0 +1,39 @@ +# Generated by Django 3.2.19 on 2023-05-31 20:10 + +from django.db import migrations, models +import django.db.models.deletion +import uuid + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='MachineConfig', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('name', models.CharField(help_text='Name of machine', max_length=255, unique=True, verbose_name='Name')), + ('machine_type', models.CharField(help_text='Type of machine', max_length=255, verbose_name='Machine Type')), + ('driver', models.CharField(help_text='Driver used for the machine', max_length=255, verbose_name='Driver')), + ('active', models.BooleanField(default=True, help_text='Machines can be disabled', verbose_name='Active')), + ], + ), + migrations.CreateModel( + name='MachineSetting', + 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=2000)), + ('config_type', models.CharField(choices=[('M', 'Machine'), ('D', 'Driver')], max_length=1, verbose_name='Config type')), + ('machine_config', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='settings', to='machine.machineconfig', verbose_name='Machine Config')), + ], + options={ + 'unique_together': {('machine_config', 'config_type', 'key')}, + }, + ), + ] diff --git a/InvenTree/machine/migrations/__init__.py b/InvenTree/machine/migrations/__init__.py new file mode 100755 index 0000000000..e69de29bb2 diff --git a/InvenTree/machine/models.py b/InvenTree/machine/models.py new file mode 100755 index 0000000000..d8f570d2fb --- /dev/null +++ b/InvenTree/machine/models.py @@ -0,0 +1,197 @@ +"""Models for the machine app.""" + +import uuid +from typing import Literal + +from django.contrib import admin +from django.db import models +from django.utils.html import escape, format_html_join +from django.utils.safestring import mark_safe +from django.utils.translation import gettext_lazy as _ + +import common.models +from machine import registry + + +class MachineConfig(models.Model): + """A Machine objects represents a physical machine.""" + + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + + name = models.CharField( + unique=True, + max_length=255, + verbose_name=_('Name'), + help_text=_('Name of machine'), + ) + + machine_type = models.CharField( + max_length=255, verbose_name=_('Machine Type'), help_text=_('Type of machine') + ) + + driver = models.CharField( + max_length=255, + verbose_name=_('Driver'), + help_text=_('Driver used for the machine'), + ) + + active = models.BooleanField( + default=True, verbose_name=_('Active'), help_text=_('Machines can be disabled') + ) + + def __str__(self) -> str: + """String representation of a machine.""" + return f'{self.name}' + + def save(self, *args, **kwargs) -> None: + """Custom save function to capture creates/updates to notify the registry.""" + created = self._state.adding + + old_machine = None + if ( + not created + and self.pk + and (old_machine := MachineConfig.objects.get(pk=self.pk)) + ): + old_machine = old_machine.to_dict() + + super().save(*args, **kwargs) + + if created: + # machine was created, add it to the machine registry + registry.add_machine(self, initialize=True) + elif old_machine: + # machine was updated, invoke update hook + # elif acts just as a type gate, old_machine should be defined always + # if machine is not created now which is already handled above + registry.update_machine(old_machine, self) + + def delete(self, *args, **kwargs): + """Remove machine from registry first.""" + if self.machine: + registry.remove_machine(self.machine) + + return super().delete(*args, **kwargs) + + def to_dict(self): + """Serialize a machine config to a dict including setting.""" + machine = {f.name: f.value_to_string(self) for f in self._meta.fields} + machine['settings'] = { + (setting.config_type, setting.key): setting.value + for setting in MachineSetting.objects.filter(machine_config=self) + } + return machine + + @property + def machine(self): + """Machine instance getter.""" + return registry.get_machine(self.pk) + + @property + def errors(self): + """Machine errors getter.""" + return getattr(self.machine, 'errors', []) + + @admin.display(boolean=True, description=_('Driver available')) + def is_driver_available(self) -> bool: + """Status if driver for machine is available.""" + return self.machine is not None and self.machine.driver is not None + + @admin.display(boolean=True, description=_('No errors')) + def no_errors(self) -> bool: + """Status if machine has errors.""" + return len(self.errors) == 0 + + @admin.display(boolean=True, description=_('Initialized')) + def initialized(self) -> bool: + """Status if machine is initialized.""" + return getattr(self.machine, 'initialized', False) + + @admin.display(description=_('Errors')) + def get_admin_errors(self): + """Get machine errors for django admin interface.""" + return format_html_join( + mark_safe('
'), '{}', ((str(error),) for error in self.errors) + ) or mark_safe(f"{_('No errors')}") + + @admin.display(description=_('Machine status')) + def get_machine_status(self): + """Get machine status for django admin interface.""" + if self.machine is None: + return None + + out = mark_safe(self.machine.status.render(self.machine.status)) + + if self.machine.status_text: + out += escape(f' ({self.machine.status_text})') + + return out + + +class MachineSetting(common.models.BaseInvenTreeSetting): + """This models represents settings for individual machines.""" + + typ = 'machine_config' + extra_unique_fields = ['machine_config', 'config_type'] + + class Meta: + """Meta for MachineSetting.""" + + unique_together = [('machine_config', 'config_type', 'key')] + + class ConfigType(models.TextChoices): + """Machine setting config type enum.""" + + MACHINE = 'M', _('Machine') + DRIVER = 'D', _('Driver') + + machine_config = models.ForeignKey( + MachineConfig, + related_name='settings', + verbose_name=_('Machine Config'), + on_delete=models.CASCADE, + ) + + config_type = models.CharField( + verbose_name=_('Config type'), max_length=1, choices=ConfigType.choices + ) + + def save(self, *args, **kwargs) -> None: + """Custom save method to notify the registry on changes.""" + old_machine = self.machine_config.to_dict() + + super().save(*args, **kwargs) + + registry.update_machine(old_machine, self.machine_config) + + @classmethod + def get_config_type(cls, config_type_str: Literal['M', 'D']): + """Helper method to get the correct enum value for easier usage with literal strings.""" + if config_type_str == 'M': + return cls.ConfigType.MACHINE + elif config_type_str == 'D': + return cls.ConfigType.DRIVER + + @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 machine driver). + + Settings can be provided by the caller, as kwargs['settings']. + + If not provided, we'll look at the machine registry to see what settings this machine driver requires + """ + if 'settings' not in kwargs: + machine_config: MachineConfig = kwargs.pop('machine_config', None) + if machine_config and machine_config.machine: + config_type = kwargs.get('config_type', None) + if config_type == cls.ConfigType.DRIVER: + kwargs['settings'] = machine_config.machine.driver_settings + elif config_type == cls.ConfigType.MACHINE: + kwargs['settings'] = machine_config.machine.machine_settings + + return super().get_setting_definition(key, **kwargs) diff --git a/InvenTree/machine/registry.py b/InvenTree/machine/registry.py new file mode 100644 index 0000000000..c2d09a6e5b --- /dev/null +++ b/InvenTree/machine/registry.py @@ -0,0 +1,226 @@ +"""Machine registry.""" + +import logging +from typing import Union +from uuid import UUID + +from machine.machine_type import BaseDriver, BaseMachineType + +logger = logging.getLogger('inventree') + + +class MachineRegistry: + """Machine registry class.""" + + def __init__(self) -> None: + """Initialize machine registry. + + Set up all needed references for internal and external states. + """ + self.machine_types: dict[str, type[BaseMachineType]] = {} + self.drivers: dict[str, type[BaseDriver]] = {} + self.driver_instances: dict[str, BaseDriver] = {} + self.machines: dict[str, BaseMachineType] = {} + + self.base_drivers: list[type[BaseDriver]] = [] + self.errors: list[Union[str, Exception]] = [] + + def handle_error(self, error: Union[Exception, str]): + """Helper function for capturing errors with the machine registry.""" + self.errors.append(error) + + def initialize(self): + """Initialize the machine registry.""" + self.discover_machine_types() + self.discover_drivers() + self.load_machines() + + def discover_machine_types(self): + """Discovers all machine types by inferring all classes that inherit the BaseMachineType class.""" + import InvenTree.helpers + + logger.debug('Collecting machine types') + + machine_types: dict[str, type[BaseMachineType]] = {} + base_drivers: list[type[BaseDriver]] = [] + + discovered_machine_types: set[type[BaseMachineType]] = ( + InvenTree.helpers.inheritors(BaseMachineType) + ) + for machine_type in discovered_machine_types: + try: + machine_type.validate() + except NotImplementedError as error: + self.handle_error(error) + continue + + if machine_type.SLUG in machine_types: + self.handle_error( + ValueError(f"Cannot re-register machine type '{machine_type.SLUG}'") + ) + continue + + machine_types[machine_type.SLUG] = machine_type + base_drivers.append(machine_type.base_driver) + + self.machine_types = machine_types + self.base_drivers = base_drivers + + logger.debug('Found %s machine types', len(self.machine_types.keys())) + + def discover_drivers(self): + """Discovers all machine drivers by inferring all classes that inherit the BaseDriver class.""" + import InvenTree.helpers + + logger.debug('Collecting machine drivers') + + drivers: dict[str, type[BaseDriver]] = {} + + discovered_drivers: set[type[BaseDriver]] = InvenTree.helpers.inheritors( + BaseDriver + ) + for driver in discovered_drivers: + # skip discovered drivers that define a base driver for a machine type + if driver in self.base_drivers: + continue + + try: + driver.validate() + except NotImplementedError as error: + self.handle_error(error) + continue + + if driver.SLUG in drivers: + self.handle_error( + ValueError(f"Cannot re-register driver '{driver.SLUG}'") + ) + continue + + drivers[driver.SLUG] = driver + + self.drivers = drivers + + logger.debug('Found %s machine drivers', len(self.drivers.keys())) + + def get_driver_instance(self, slug: str): + """Return or create a driver instance if needed.""" + if slug not in self.driver_instances: + driver = self.drivers.get(slug, None) + if driver is None: + return None + + self.driver_instances[slug] = driver() + + return self.driver_instances.get(slug, None) + + def load_machines(self): + """Load all machines defined in the database into the machine registry.""" + # Imports need to be in this level to prevent early db model imports + from machine.models import MachineConfig + + for machine_config in MachineConfig.objects.all(): + self.add_machine(machine_config, initialize=False) + + # initialize drivers + for driver in self.driver_instances.values(): + driver.init_driver() + + # initialize machines after all machine instances were created + for machine in self.machines.values(): + if machine.active: + machine.initialize() + + logger.info('Initialized %s machines', len(self.machines.keys())) + + def add_machine(self, machine_config, initialize=True): + """Add a machine to the machine registry.""" + machine_type = self.machine_types.get(machine_config.machine_type, None) + if machine_type is None: + self.handle_error(f"Machine type '{machine_config.machine_type}' not found") + return + + machine: BaseMachineType = machine_type(machine_config) + self.machines[str(machine.pk)] = machine + + if initialize and machine.active: + machine.initialize() + + def update_machine(self, old_machine_state, machine_config): + """Notify the machine about an update.""" + if machine := machine_config.machine: + machine.update(old_machine_state) + + def restart_machine(self, machine): + """Restart a machine.""" + machine.restart() + + def remove_machine(self, machine: BaseMachineType): + """Remove a machine from the registry.""" + self.machines.pop(str(machine.pk), None) + + def get_machines(self, **kwargs): + """Get loaded machines from registry (By default only initialized machines). + + Kwargs: + name: Machine name + machine_type: Machine type definition (class) + driver: Machine driver (class) + initialized (bool | None): use None to get all machines (default: True) + active: (bool) + base_driver: base driver (class) + """ + allowed_fields = [ + 'name', + 'machine_type', + 'driver', + 'initialized', + 'active', + 'base_driver', + ] + + if 'initialized' not in kwargs: + kwargs['initialized'] = True + if kwargs['initialized'] is None: + del kwargs['initialized'] + + def filter_machine(machine: BaseMachineType): + for key, value in kwargs.items(): + if key not in allowed_fields: + raise ValueError( + f"'{key}' is not a valid filter field for registry.get_machines." + ) + + # check if current driver is subclass from base_driver + if key == 'base_driver': + if machine.driver and not issubclass( + machine.driver.__class__, value + ): + return False + + # check if current machine is subclass from machine_type + elif key == 'machine_type': + if issubclass(machine.__class__, value): + return False + + # check attributes of machine + elif value != getattr(machine, key, None): + return False + + return True + + return list(filter(filter_machine, self.machines.values())) + + def get_machine(self, pk: Union[str, UUID]): + """Get machine from registry by pk.""" + return self.machines.get(str(pk), None) + + def get_drivers(self, machine_type: str): + """Get all drivers for a specific machine type.""" + return [ + driver + for driver in self.driver_instances.values() + if driver.machine_type == machine_type + ] + + +registry: MachineRegistry = MachineRegistry() diff --git a/InvenTree/machine/serializers.py b/InvenTree/machine/serializers.py new file mode 100644 index 0000000000..e1f75632e3 --- /dev/null +++ b/InvenTree/machine/serializers.py @@ -0,0 +1,206 @@ +"""Serializers for the machine app.""" + +from typing import Union + +from rest_framework import serializers + +from common.serializers import GenericReferencedSettingSerializer +from InvenTree.helpers_mixin import ClassProviderMixin +from machine import registry +from machine.models import MachineConfig, MachineSetting + + +class MachineConfigSerializer(serializers.ModelSerializer): + """Serializer for a MachineConfig.""" + + class Meta: + """Meta for serializer.""" + + model = MachineConfig + fields = [ + 'pk', + 'name', + 'machine_type', + 'driver', + 'initialized', + 'active', + 'status', + 'status_model', + 'status_text', + 'machine_errors', + 'is_driver_available', + 'restart_required', + ] + + read_only_fields = ['machine_type', 'driver'] + + initialized = serializers.SerializerMethodField('get_initialized') + status = serializers.SerializerMethodField('get_status') + status_model = serializers.SerializerMethodField('get_status_model') + status_text = serializers.SerializerMethodField('get_status_text') + machine_errors = serializers.SerializerMethodField('get_errors') + is_driver_available = serializers.SerializerMethodField('get_is_driver_available') + restart_required = serializers.SerializerMethodField('get_restart_required') + + def get_initialized(self, obj: MachineConfig) -> bool: + """Serializer method for the initialized field.""" + return getattr(obj.machine, 'initialized', False) + + def get_status(self, obj: MachineConfig) -> int: + """Serializer method for the status field.""" + status = getattr(obj.machine, 'status', None) + if status is not None: + return status.value + return -1 + + def get_status_model(self, obj: MachineConfig) -> Union[str, None]: + """Serializer method for the status model field.""" + if obj.machine and obj.machine.MACHINE_STATUS: + return obj.machine.MACHINE_STATUS.__name__ + + def get_status_text(self, obj: MachineConfig) -> str: + """Serializer method for the status text field.""" + return getattr(obj.machine, 'status_text', '') + + def get_errors(self, obj: MachineConfig) -> list[str]: + """Serializer method for the errors field.""" + return [str(err) for err in obj.errors] + + def get_is_driver_available(self, obj: MachineConfig) -> bool: + """Serializer method for the is_driver_available field.""" + return obj.is_driver_available() + + def get_restart_required(self, obj: MachineConfig) -> bool: + """Serializer method for the restart_required field.""" + return getattr(obj.machine, 'restart_required', False) + + +class MachineConfigCreateSerializer(MachineConfigSerializer): + """Serializer for creating a MachineConfig.""" + + class Meta(MachineConfigSerializer.Meta): + """Meta for serializer.""" + + read_only_fields = list( + set(MachineConfigSerializer.Meta.read_only_fields) + - {'machine_type', 'driver'} + ) + + +class MachineSettingSerializer(GenericReferencedSettingSerializer): + """Serializer for the MachineSetting model.""" + + MODEL = MachineSetting + EXTRA_FIELDS = ['config_type'] + + def __init__(self, *args, **kwargs): + """Custom init method to make the config_type field read only.""" + super().__init__(*args, **kwargs) + + self.Meta.read_only_fields = ['config_type'] # type: ignore + + +class BaseMachineClassSerializer(serializers.Serializer): + """Serializer for a BaseClass.""" + + class Meta: + """Meta for a serializer.""" + + fields = [ + 'slug', + 'name', + 'description', + 'provider_file', + 'provider_plugin', + 'is_builtin', + ] + + read_only_fields = fields + + slug = serializers.SlugField(source='SLUG') + name = serializers.CharField(source='NAME') + description = serializers.CharField(source='DESCRIPTION') + provider_file = serializers.SerializerMethodField('get_provider_file') + provider_plugin = serializers.SerializerMethodField('get_provider_plugin') + is_builtin = serializers.SerializerMethodField('get_is_builtin') + + def get_provider_file(self, obj: ClassProviderMixin) -> str: + """Serializer method for the provider_file field.""" + return obj.get_provider_file() + + def get_provider_plugin(self, obj: ClassProviderMixin) -> Union[dict, None]: + """Serializer method for the provider_plugin field.""" + plugin = obj.get_provider_plugin() + if plugin: + return { + 'slug': plugin.slug, + 'name': plugin.human_name, + 'pk': getattr(plugin.plugin_config(), 'pk', None), + } + return None + + def get_is_builtin(self, obj: ClassProviderMixin) -> bool: + """Serializer method for the is_builtin field.""" + return obj.get_is_builtin() + + +class MachineTypeSerializer(BaseMachineClassSerializer): + """Serializer for a BaseMachineType class.""" + + class Meta(BaseMachineClassSerializer.Meta): + """Meta for a serializer.""" + + fields = [*BaseMachineClassSerializer.Meta.fields] + + +class MachineDriverSerializer(BaseMachineClassSerializer): + """Serializer for a BaseMachineDriver class.""" + + class Meta(BaseMachineClassSerializer.Meta): + """Meta for a serializer.""" + + fields = [*BaseMachineClassSerializer.Meta.fields, 'machine_type', 'errors'] + + machine_type = serializers.SlugField(read_only=True) + + driver_errors = serializers.SerializerMethodField('get_errors') + + def get_errors(self, obj) -> list[str]: + """Serializer method for the errors field.""" + driver_instance = registry.driver_instances.get(obj.SLUG, None) + if driver_instance is None: + return [] + return [str(err) for err in driver_instance.errors] + + +class MachineRegistryErrorSerializer(serializers.Serializer): + """Serializer for a machine registry error.""" + + class Meta: + """Meta for a serializer.""" + + fields = ['message'] + + message = serializers.CharField() + + +class MachineRegistryStatusSerializer(serializers.Serializer): + """Serializer for machine registry status.""" + + class Meta: + """Meta for a serializer.""" + + fields = ['registry_errors'] + + registry_errors = serializers.ListField(child=MachineRegistryErrorSerializer()) + + +class MachineRestartSerializer(serializers.Serializer): + """Serializer for the machine restart response.""" + + class Meta: + """Meta for a serializer.""" + + fields = ['ok'] + + ok = serializers.BooleanField() diff --git a/InvenTree/machine/test_api.py b/InvenTree/machine/test_api.py new file mode 100644 index 0000000000..1e603bd2c2 --- /dev/null +++ b/InvenTree/machine/test_api.py @@ -0,0 +1,307 @@ +"""Machine API tests.""" + +import re +from typing import cast + +from django.urls import reverse + +from InvenTree.unit_test import InvenTreeAPITestCase +from machine import registry +from machine.machine_type import BaseDriver, BaseMachineType +from machine.machine_types import LabelPrinterBaseDriver +from machine.models import MachineConfig +from machine.tests import TestMachineRegistryMixin +from stock.models import StockLocation + + +class MachineAPITest(TestMachineRegistryMixin, InvenTreeAPITestCase): + """Class for unit testing machine API endpoints.""" + + roles = ['admin.add', 'admin.view', 'admin.change', 'admin.delete'] + + def setUp(self): + """Setup some testing drivers/machines.""" + + class TestingLabelPrinterDriver(LabelPrinterBaseDriver): + """Test driver for label printing.""" + + SLUG = 'test-label-printer-api' + NAME = 'Test label printer' + DESCRIPTION = 'This is a test label printer driver for testing.' + + MACHINE_SETTINGS = { + 'TEST_SETTING': { + 'name': 'Test setting', + 'description': 'This is a test setting', + } + } + + def restart_machine(self, machine: BaseMachineType): + """Override restart_machine.""" + machine.set_status_text('Restarting...') + + def print_label(self, *args, **kwargs) -> None: + """Override print_label.""" + + class TestingLabelPrinterDriverError1(LabelPrinterBaseDriver): + """Test driver for label printing.""" + + SLUG = 'test-label-printer-error' + NAME = 'Test label printer error' + DESCRIPTION = 'This is a test label printer driver for testing.' + + def print_label(self, *args, **kwargs) -> None: + """Override print_label.""" + + class TestingLabelPrinterDriverError2(LabelPrinterBaseDriver): + """Test driver for label printing.""" + + SLUG = 'test-label-printer-error' + NAME = 'Test label printer error' + DESCRIPTION = 'This is a test label printer driver for testing.' + + def print_label(self, *args, **kwargs) -> None: + """Override print_label.""" + + class TestingLabelPrinterDriverNotImplemented(LabelPrinterBaseDriver): + """Test driver for label printing.""" + + SLUG = 'test-label-printer-not-implemented' + NAME = 'Test label printer error not implemented' + DESCRIPTION = 'This is a test label printer driver for testing.' + + registry.initialize() + + super().setUp() + + def test_machine_type_list(self): + """Test machine types list API endpoint.""" + response = self.get(reverse('api-machine-types')) + machine_type = [t for t in response.data if t['slug'] == 'label-printer'] + self.assertEqual(len(machine_type), 1) + machine_type = machine_type[0] + self.assertDictContainsSubset( + { + 'slug': 'label-printer', + 'name': 'Label Printer', + 'description': 'Directly print labels for various items.', + 'provider_plugin': None, + 'is_builtin': True, + }, + machine_type, + ) + self.assertTrue( + machine_type['provider_file'].endswith( + 'machine/machine_types/label_printer.py' + ) + ) + + def test_machine_driver_list(self): + """Test machine driver list API endpoint.""" + response = self.get(reverse('api-machine-drivers')) + driver = [a for a in response.data if a['slug'] == 'test-label-printer-api'] + self.assertEqual(len(driver), 1) + driver = driver[0] + self.assertDictContainsSubset( + { + 'slug': 'test-label-printer-api', + 'name': 'Test label printer', + 'description': 'This is a test label printer driver for testing.', + 'provider_plugin': None, + 'is_builtin': True, + 'machine_type': 'label-printer', + 'driver_errors': [], + }, + driver, + ) + self.assertEqual(driver['provider_file'], __file__) + + # Test driver with errors + driver_instance = cast( + BaseDriver, registry.get_driver_instance('test-label-printer-api') + ) + self.assertIsNotNone(driver_instance) + driver_instance.handle_error('Test error') + + response = self.get(reverse('api-machine-drivers')) + driver = [a for a in response.data if a['slug'] == 'test-label-printer-api'] + self.assertEqual(len(driver), 1) + driver = driver[0] + self.assertEqual(driver['driver_errors'], ['Test error']) + + def test_machine_status(self): + """Test machine status API endpoint.""" + response = self.get(reverse('api-machine-registry-status')) + errors_msgs = [e['message'] for e in response.data['registry_errors']] + + required_patterns = [ + r'\'\' did not override the required attributes: one of print_label or print_labels', + "Cannot re-register driver 'test-label-printer-error'", + ] + + for pattern in required_patterns: + for error in errors_msgs: + if re.match(pattern, error): + break + else: + errors_str = '\n'.join([f'- {e}' for e in errors_msgs]) + self.fail( + f"""Error message matching pattern '{pattern}' not found in machine registry errors:\n{errors_str}""" + ) + + def test_machine_list(self): + """Test machine list API endpoint.""" + response = self.get(reverse('api-machine-list')) + self.assertEqual(len(response.data), 0) + + MachineConfig.objects.create( + machine_type='label-printer', + driver='test-label-printer-api', + name='Test Machine', + active=True, + ) + + response = self.get(reverse('api-machine-list')) + self.assertEqual(len(response.data), 1) + self.assertDictContainsSubset( + { + 'name': 'Test Machine', + 'machine_type': 'label-printer', + 'driver': 'test-label-printer-api', + 'initialized': True, + 'active': True, + 'status': 101, + 'status_model': 'LabelPrinterStatus', + 'status_text': '', + 'is_driver_available': True, + }, + response.data[0], + ) + + def test_machine_detail(self): + """Test machine detail API endpoint.""" + self.assertFalse(len(MachineConfig.objects.all()), 0) + self.get( + reverse('api-machine-detail', kwargs={'pk': self.placeholder_uuid}), + expected_code=404, + ) + + machine_data = { + 'machine_type': 'label-printer', + 'driver': 'test-label-printer-api', + 'name': 'Test Machine', + 'active': True, + } + + # Create a machine + response = self.post(reverse('api-machine-list'), machine_data) + self.assertDictContainsSubset(machine_data, response.data) + pk = response.data['pk'] + + # Retrieve the machine + response = self.get(reverse('api-machine-detail', kwargs={'pk': pk})) + self.assertDictContainsSubset(machine_data, response.data) + + # Update the machine + response = self.patch( + reverse('api-machine-detail', kwargs={'pk': pk}), + {'name': 'Updated Machine'}, + ) + self.assertDictContainsSubset({'name': 'Updated Machine'}, response.data) + self.assertEqual(MachineConfig.objects.get(pk=pk).name, 'Updated Machine') + + # Delete the machine + response = self.delete( + reverse('api-machine-detail', kwargs={'pk': pk}), expected_code=204 + ) + self.assertFalse(len(MachineConfig.objects.all()), 0) + + # Create machine where the driver does not exist + machine_data['driver'] = 'non-existent-driver' + machine_data['name'] = 'Machine with non-existent driver' + response = self.post(reverse('api-machine-list'), machine_data) + self.assertIn( + "Driver 'non-existent-driver' not found", response.data['machine_errors'] + ) + self.assertFalse(response.data['initialized']) + self.assertFalse(response.data['is_driver_available']) + + def test_machine_detail_settings(self): + """Test machine detail settings API endpoint.""" + machine_setting_url = reverse( + 'api-machine-settings-detail', + kwargs={'pk': self.placeholder_uuid, 'config_type': 'M', 'key': 'LOCATION'}, + ) + + # Test machine settings for non-existent machine + self.get(machine_setting_url, expected_code=404) + + # Create a machine + machine = MachineConfig.objects.create( + machine_type='label-printer', + driver='test-label-printer-api', + name='Test Machine with settings', + active=True, + ) + + machine_setting_url = reverse( + 'api-machine-settings-detail', + kwargs={'pk': machine.pk, 'config_type': 'M', 'key': 'LOCATION'}, + ) + driver_setting_url = reverse( + 'api-machine-settings-detail', + kwargs={'pk': machine.pk, 'config_type': 'D', 'key': 'TEST_SETTING'}, + ) + + # Get settings + response = self.get(machine_setting_url) + self.assertEqual(response.data['value'], '') + + response = self.get(driver_setting_url) + self.assertEqual(response.data['value'], '') + + # Update machine setting + location = StockLocation.objects.create(name='Test Location') + response = self.patch(machine_setting_url, {'value': str(location.pk)}) + self.assertEqual(response.data['value'], str(location.pk)) + + response = self.get(machine_setting_url) + self.assertEqual(response.data['value'], str(location.pk)) + + # Update driver setting + response = self.patch(driver_setting_url, {'value': 'test value'}) + self.assertEqual(response.data['value'], 'test value') + + response = self.get(driver_setting_url) + self.assertEqual(response.data['value'], 'test value') + + # Get list of all settings for a machine + settings_url = reverse('api-machine-settings', kwargs={'pk': machine.pk}) + response = self.get(settings_url) + self.assertEqual(len(response.data), 2) + self.assertEqual( + [('M', 'LOCATION'), ('D', 'TEST_SETTING')], + [(s['config_type'], s['key']) for s in response.data], + ) + + def test_machine_restart(self): + """Test machine restart API endpoint.""" + machine = MachineConfig.objects.create( + machine_type='label-printer', + driver='test-label-printer-api', + name='Test Machine', + active=True, + ) + + # verify machine status before restart + response = self.get(reverse('api-machine-detail', kwargs={'pk': machine.pk})) + self.assertEqual(response.data['status_text'], '') + + # restart the machine + response = self.post( + reverse('api-machine-restart', kwargs={'pk': machine.pk}), expected_code=200 + ) + + # verify machine status after restart + response = self.get(reverse('api-machine-detail', kwargs={'pk': machine.pk})) + self.assertEqual(response.data['status_text'], 'Restarting...') diff --git a/InvenTree/machine/tests.py b/InvenTree/machine/tests.py new file mode 100755 index 0000000000..03cbb74652 --- /dev/null +++ b/InvenTree/machine/tests.py @@ -0,0 +1,303 @@ +"""Machine app tests.""" + +from typing import cast +from unittest.mock import MagicMock, Mock + +from django.apps import apps +from django.test import TestCase +from django.urls import reverse + +from rest_framework import serializers + +from InvenTree.unit_test import InvenTreeAPITestCase +from label.models import PartLabel +from machine.machine_type import BaseDriver, BaseMachineType, MachineStatus +from machine.machine_types.label_printer import LabelPrinterBaseDriver +from machine.models import MachineConfig +from machine.registry import registry +from part.models import Part +from plugin.models import PluginConfig +from plugin.registry import registry as plg_registry + + +class TestMachineRegistryMixin(TestCase): + """Machine registry test mixin to setup the registry between tests correctly.""" + + placeholder_uuid = '00000000-0000-0000-0000-000000000000' + + def tearDown(self) -> None: + """Clean up after testing.""" + registry.machine_types = {} + registry.drivers = {} + registry.driver_instances = {} + registry.machines = {} + registry.base_drivers = [] + registry.errors = [] + + return super().tearDown() + + +class TestDriverMachineInterface(TestMachineRegistryMixin, TestCase): + """Test the machine registry.""" + + def setUp(self): + """Setup some testing drivers/machines.""" + + class TestingMachineBaseDriver(BaseDriver): + """Test base driver for testing machines.""" + + machine_type = 'testing-type' + + class TestingMachineType(BaseMachineType): + """Test machine type for testing.""" + + SLUG = 'testing-type' + NAME = 'Testing machine type' + DESCRIPTION = 'This is a test machine type for testing.' + + base_driver = TestingMachineBaseDriver + + class TestingMachineTypeStatus(MachineStatus): + """Test machine status.""" + + UNKNOWN = 100, 'Unknown', 'secondary' + + MACHINE_STATUS = TestingMachineTypeStatus + default_machine_status = MACHINE_STATUS.UNKNOWN + + class TestingDriver(TestingMachineBaseDriver): + """Test driver for testing machines.""" + + SLUG = 'test-driver' + NAME = 'Test Driver' + DESCRIPTION = 'This is a test driver for testing.' + + MACHINE_SETTINGS = { + 'TEST_SETTING': {'name': 'Test Setting', 'description': 'Test setting'} + } + + # mock driver implementation + self.driver_mocks = { + k: Mock() + for k in [ + 'init_driver', + 'init_machine', + 'update_machine', + 'restart_machine', + ] + } + + for key, value in self.driver_mocks.items(): + setattr(TestingDriver, key, value) + + self.machine1 = MachineConfig.objects.create( + name='Test Machine 1', + machine_type='testing-type', + driver='test-driver', + active=True, + ) + self.machine2 = MachineConfig.objects.create( + name='Test Machine 2', + machine_type='testing-type', + driver='test-driver', + active=True, + ) + self.machine3 = MachineConfig.objects.create( + name='Test Machine 3', + machine_type='testing-type', + driver='test-driver', + active=False, + ) + self.machines = [self.machine1, self.machine2, self.machine3] + + # init registry + registry.initialize() + + # mock machine implementation + self.machine_mocks = { + m: {k: MagicMock() for k in ['update', 'restart']} for m in self.machines + } + for machine_config, mock_dict in self.machine_mocks.items(): + for key, mock in mock_dict.items(): + mock.side_effect = getattr(machine_config.machine, key) + setattr(machine_config.machine, key, mock) + + super().setUp() + + def test_machine_lifecycle(self): + """Test the machine lifecycle.""" + # test that the registry is initialized correctly + self.assertEqual(len(registry.machines), 3) + self.assertEqual(len(registry.driver_instances), 1) + + # test get_machines + self.assertEqual(len(registry.get_machines()), 2) + self.assertEqual(len(registry.get_machines(initialized=None)), 3) + self.assertEqual(len(registry.get_machines(active=False, initialized=False)), 1) + self.assertEqual(len(registry.get_machines(name='Test Machine 1')), 1) + self.assertEqual( + len(registry.get_machines(name='Test Machine 1', active=False)), 0 + ) + self.assertEqual( + len(registry.get_machines(name='Test Machine 1', active=True)), 1 + ) + + # test get_machines with an unknown filter + with self.assertRaisesMessage( + ValueError, + "'unknown_filter' is not a valid filter field for registry.get_machines.", + ): + registry.get_machines(unknown_filter='test') + + # test get_machine + self.assertEqual(registry.get_machine(self.machine1.pk), self.machine1.machine) + + # test get_drivers + self.assertEqual(len(registry.get_drivers('testing-type')), 1) + self.assertEqual(registry.get_drivers('testing-type')[0].SLUG, 'test-driver') + + # test that init hooks where called correctly + self.driver_mocks['init_driver'].assert_called_once() + self.assertEqual(self.driver_mocks['init_machine'].call_count, 2) + + # Test machine restart hook + registry.restart_machine(self.machine1.machine) + self.driver_mocks['restart_machine'].assert_called_once_with( + self.machine1.machine + ) + self.assertEqual(self.machine_mocks[self.machine1]['restart'].call_count, 1) + + # Test machine update hook + self.machine1.name = 'Test Machine 1 - Updated' + self.machine1.save() + self.driver_mocks['update_machine'].assert_called_once() + self.assertEqual(self.machine_mocks[self.machine1]['update'].call_count, 1) + old_machine_state, machine = self.driver_mocks['update_machine'].call_args.args + self.assertEqual(old_machine_state['name'], 'Test Machine 1') + self.assertEqual(machine.name, 'Test Machine 1 - Updated') + self.assertEqual(self.machine1.machine, machine) + self.machine_mocks[self.machine1]['update'].reset_mock() + + # get ref to machine 1 + machine1: BaseMachineType = self.machine1.machine # type: ignore + self.assertIsNotNone(machine1) + + # Test machine setting update hook + self.assertEqual(machine1.get_setting('TEST_SETTING', 'D'), '') + machine1.set_setting('TEST_SETTING', 'D', 'test-value') + self.assertEqual(self.machine_mocks[self.machine1]['update'].call_count, 2) + old_machine_state, machine = self.driver_mocks['update_machine'].call_args.args + self.assertEqual(old_machine_state['settings']['D', 'TEST_SETTING'], '') + self.assertEqual(machine1.get_setting('TEST_SETTING', 'D'), 'test-value') + self.assertEqual(self.machine1.machine, machine) + + # Test remove machine + self.assertEqual(len(registry.get_machines()), 2) + registry.remove_machine(machine1) + self.assertEqual(len(registry.get_machines()), 1) + + +class TestLabelPrinterMachineType(TestMachineRegistryMixin, InvenTreeAPITestCase): + """Test the label printer machine type.""" + + fixtures = ['category', 'part', 'location', 'stock'] + + def setUp(self): + """Setup the label printer machine type.""" + super().setUp() + + class TestingLabelPrinterDriver(LabelPrinterBaseDriver): + """Label printer driver for testing.""" + + SLUG = 'testing-label-printer' + NAME = 'Testing Label Printer' + DESCRIPTION = 'This is a test label printer driver for testing.' + + class PrintingOptionsSerializer( + LabelPrinterBaseDriver.PrintingOptionsSerializer + ): + """Test printing options serializer.""" + + test_option = serializers.IntegerField() + + def print_label(self, *args, **kwargs): + """Mock print label method so that there are no errors.""" + + self.machine = MachineConfig.objects.create( + name='Test Label Printer', + machine_type='label-printer', + driver='testing-label-printer', + active=True, + ) + + registry.initialize() + driver_instance = cast( + TestingLabelPrinterDriver, + registry.get_driver_instance('testing-label-printer'), + ) + + self.print_label = Mock() + driver_instance.print_label = self.print_label + + self.print_labels = Mock(side_effect=driver_instance.print_labels) + driver_instance.print_labels = self.print_labels + + def test_print_label(self): + """Test the print label method.""" + plugin_ref = 'inventreelabelmachine' + + # setup the label app + apps.get_app_config('label').create_labels() # type: ignore + plg_registry.reload_plugins() + config = cast(PluginConfig, plg_registry.get_plugin(plugin_ref).plugin_config()) # type: ignore + config.active = True + config.save() + + parts = Part.objects.all()[:2] + label = cast(PartLabel, PartLabel.objects.first()) + + url = reverse('api-part-label-print', kwargs={'pk': label.pk}) + url += f'/?plugin={plugin_ref}&part[]={parts[0].pk}&part[]={parts[1].pk}' + + self.post( + url, + { + 'machine': str(self.machine.pk), + 'driver_options': {'copies': '1', 'test_option': '2'}, + }, + expected_code=200, + ) + + # test the print labels method call + self.print_labels.assert_called_once() + self.assertEqual(self.print_labels.call_args.args[0], self.machine.machine) + self.assertEqual(self.print_labels.call_args.args[1], label) + self.assertQuerySetEqual( + self.print_labels.call_args.args[2], parts, transform=lambda x: x + ) + self.assertIn('printing_options', self.print_labels.call_args.kwargs) + self.assertEqual( + self.print_labels.call_args.kwargs['printing_options'], + {'copies': 1, 'test_option': 2}, + ) + + # test the single print label method calls + self.assertEqual(self.print_label.call_count, 2) + self.assertEqual(self.print_label.call_args.args[0], self.machine.machine) + self.assertEqual(self.print_label.call_args.args[1], label) + self.assertEqual(self.print_label.call_args.args[2], parts[1]) + self.assertIn('printing_options', self.print_labels.call_args.kwargs) + self.assertEqual( + self.print_labels.call_args.kwargs['printing_options'], + {'copies': 1, 'test_option': 2}, + ) + + # test with non existing machine + self.post( + url, + { + 'machine': self.placeholder_uuid, + 'driver_options': {'copies': '1', 'test_option': '2'}, + }, + expected_code=400, + ) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index f6779d31ca..db62dfb6ea 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -1362,8 +1362,8 @@ class OrderCalendarExport(ICalFeed): return super().__call__(request, *args, **kwargs) # No login yet - check in headers - if 'HTTP_AUTHORIZATION' in request.META: - auth = request.META['HTTP_AUTHORIZATION'].split() + if 'authorization' in request.headers: + auth = request.headers['authorization'].split() if len(auth) == 2: # NOTE: We are only support basic authentication for now. # diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index e224053f7f..3254e8d8ae 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -24,6 +24,7 @@ from mptt.models import TreeForeignKey import common.models as common_models import InvenTree.helpers +import InvenTree.models import InvenTree.ready import InvenTree.tasks import InvenTree.validators @@ -42,13 +43,6 @@ from InvenTree.fields import ( ) from InvenTree.helpers import decimal2string from InvenTree.helpers_model import getSetting, notify_responsible -from InvenTree.models import ( - InvenTreeAttachment, - InvenTreeBarcodeMixin, - InvenTreeNotesMixin, - MetadataMixin, - ReferenceIndexingMixin, -) from InvenTree.status_codes import ( PurchaseOrderStatus, PurchaseOrderStatusGroups, @@ -78,7 +72,14 @@ class TotalPriceMixin(models.Model): """Update the total_price field when saved.""" # Recalculate total_price for this order self.update_total_price(commit=False) - super().save(*args, **kwargs) + + if hasattr(self, '_SAVING_TOTAL_PRICE') and self._SAVING_TOTAL_PRICE: + # Avoid recursion on save + return super().save(*args, **kwargs) + self._SAVING_TOTAL_PRICE = True + + # Save the object as we can not access foreign/m2m fields before saving + self.update_total_price(commit=True) total_price = InvenTreeModelMoneyField( null=True, @@ -136,6 +137,10 @@ class TotalPriceMixin(models.Model): total = Money(0, target_currency) + # Check if the order has been saved (otherwise we can't calculate the total price) + if self.pk is None: + return total + # order items for line in self.lines.all(): if not line.price: @@ -177,10 +182,11 @@ class TotalPriceMixin(models.Model): class Order( StateTransitionMixin, - InvenTreeBarcodeMixin, - InvenTreeNotesMixin, - MetadataMixin, - ReferenceIndexingMixin, + InvenTree.models.InvenTreeBarcodeMixin, + InvenTree.models.InvenTreeNotesMixin, + InvenTree.models.MetadataMixin, + InvenTree.models.ReferenceIndexingMixin, + InvenTree.models.InvenTreeModel, ): """Abstract model for an order. @@ -211,7 +217,6 @@ class Order( Ensures that the reference field is rebuilt whenever the instance is saved. """ self.reference_int = self.rebuild_reference_field(self.reference) - if not self.creation_date: self.creation_date = datetime.now().date() @@ -1168,7 +1173,7 @@ def after_save_sales_order(sender, instance: SalesOrder, created: bool, **kwargs notify_responsible(instance, sender, exclude=instance.created_by) -class PurchaseOrderAttachment(InvenTreeAttachment): +class PurchaseOrderAttachment(InvenTree.models.InvenTreeAttachment): """Model for storing file attachments against a PurchaseOrder object.""" @staticmethod @@ -1185,7 +1190,7 @@ class PurchaseOrderAttachment(InvenTreeAttachment): ) -class SalesOrderAttachment(InvenTreeAttachment): +class SalesOrderAttachment(InvenTree.models.InvenTreeAttachment): """Model for storing file attachments against a SalesOrder object.""" @staticmethod @@ -1202,7 +1207,7 @@ class SalesOrderAttachment(InvenTreeAttachment): ) -class OrderLineItem(MetadataMixin, models.Model): +class OrderLineItem(InvenTree.models.InvenTreeMetadataModel): """Abstract model for an order line item. Attributes: @@ -1577,7 +1582,11 @@ class SalesOrderLineItem(OrderLineItem): return self.shipped >= self.quantity -class SalesOrderShipment(InvenTreeNotesMixin, MetadataMixin, models.Model): +class SalesOrderShipment( + InvenTree.models.InvenTreeNotesMixin, + InvenTree.models.MetadataMixin, + InvenTree.models.InvenTreeModel, +): """The SalesOrderShipment model represents a physical shipment made against a SalesOrder. - Points to a single SalesOrder object @@ -2218,7 +2227,7 @@ class ReturnOrderExtraLine(OrderExtraLine): ) -class ReturnOrderAttachment(InvenTreeAttachment): +class ReturnOrderAttachment(InvenTree.models.InvenTreeAttachment): """Model for storing file attachments against a ReturnOrder object.""" @staticmethod diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index c6e777c70a..ec5ba4d200 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -97,6 +97,8 @@ class AbstractOrderSerializer(serializers.Serializer): barcode_hash = serializers.CharField(read_only=True) + creation_date = serializers.DateField(required=False, allow_null=True) + def validate_reference(self, reference): """Custom validation for the reference field.""" self.Meta.model.validate_reference_field(reference) diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index 24cb4e4b78..4d9fac48f0 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -243,6 +243,9 @@ order: {{ order.pk }}, reference: '{{ order.reference }}', status: {{ order.status }}, + {% if order.project_code %} + project_code: {{ order.project_code.pk }}, + {% endif %} open: {% js_bool order.is_open %}, {% if roles.sales_order.change %} {% settings_value "SALESORDER_EDIT_COMPLETED_ORDERS" as allow_edit %} diff --git a/InvenTree/order/test_api.py b/InvenTree/order/test_api.py index 889f6477fc..c971c3d6a5 100644 --- a/InvenTree/order/test_api.py +++ b/InvenTree/order/test_api.py @@ -357,6 +357,39 @@ class PurchaseOrderTest(OrderTest): expected_code=201, ) + def test_po_creation_date(self): + """Test that we can create set the creation_date field of PurchaseOrder via the API.""" + self.assignRole('purchase_order.add') + + response = self.post( + reverse('api-po-list'), + { + 'reference': 'PO-19881110', + 'supplier': 1, + 'description': 'PO created on 1988-11-10', + 'creation_date': '1988-11-10', + }, + expected_code=201, + ) + + po = models.PurchaseOrder.objects.get(pk=response.data['pk']) + self.assertEqual(po.creation_date, datetime(1988, 11, 10).date()) + + """Ensure if we do not pass the creation_date field than the current date will be saved""" + creation_date = datetime.now().date() + response = self.post( + reverse('api-po-list'), + { + 'reference': 'PO-11111111', + 'supplier': 1, + 'description': 'Check that the creation date is today', + }, + expected_code=201, + ) + + po = models.PurchaseOrder.objects.get(pk=response.data['pk']) + self.assertEqual(po.creation_date, creation_date) + def test_po_duplicate(self): """Test that we can duplicate a PurchaseOrder via the API.""" self.assignRole('purchase_order.add') @@ -601,7 +634,7 @@ class PurchaseOrderTest(OrderTest): response = self.client.get( reverse('api-po-so-calendar', kwargs={'ordertype': 'purchase-order'}), format='json', - HTTP_AUTHORIZATION=f'basic {base64_token}', + headers={'authorization': f'basic {base64_token}'}, ) self.assertEqual(response.status_code, 200) diff --git a/InvenTree/order/test_views.py b/InvenTree/order/test_views.py index 72afe05743..825495daa4 100644 --- a/InvenTree/order/test_views.py +++ b/InvenTree/order/test_views.py @@ -57,7 +57,8 @@ class PurchaseOrderTests(OrderViewTestCase): def test_po_export(self): """Export PurchaseOrder.""" response = self.client.get( - reverse('po-export', args=(1,)), HTTP_X_REQUESTED_WITH='XMLHttpRequest' + reverse('po-export', args=(1,)), + headers={'x-requested-with': 'XMLHttpRequest'}, ) # Response should be streaming-content (file download) diff --git a/InvenTree/part/admin.py b/InvenTree/part/admin.py index a692ff9ac8..33d23fd533 100644 --- a/InvenTree/part/admin.py +++ b/InvenTree/part/admin.py @@ -57,7 +57,7 @@ class PartResource(InvenTreeResource): attribute='units', column_name=_('Units'), widget=widgets.CharWidget() ) notes = Field(attribute='notes', column_name=_('Notes')) - image = Field(attribute='image', column_name=_('Part Image'), readonly=True) + image = Field(attribute='image', column_name=_('Part Image')) category = Field( attribute='category', column_name=_('Category ID'), @@ -363,6 +363,7 @@ class PartTestTemplateAdmin(admin.ModelAdmin): """Admin class for the PartTestTemplate model.""" list_display = ('part', 'test_name', 'required') + readonly_fields = ['key'] autocomplete_fields = ('part',) diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index b658577936..89bbe6cb39 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -49,6 +49,7 @@ from InvenTree.mixins import ( UpdateAPI, ) from InvenTree.permissions import RolePermission +from InvenTree.serializers import EmptySerializer from InvenTree.status_codes import ( BuildStatusGroups, PurchaseOrderStatusGroups, @@ -367,53 +368,87 @@ class PartAttachmentDetail(AttachmentMixin, RetrieveUpdateDestroyAPI): serializer_class = part_serializers.PartAttachmentSerializer -class PartTestTemplateDetail(RetrieveUpdateDestroyAPI): - """Detail endpoint for PartTestTemplate model.""" +class PartTestTemplateFilter(rest_filters.FilterSet): + """Custom filterset class for the PartTestTemplateList endpoint.""" - queryset = PartTestTemplate.objects.all() - serializer_class = part_serializers.PartTestTemplateSerializer + class Meta: + """Metaclass options for this filterset.""" + model = PartTestTemplate + fields = ['required', 'requires_value', 'requires_attachment', 'key'] -class PartTestTemplateList(ListCreateAPI): - """API endpoint for listing (and creating) a PartTestTemplate. + part = rest_filters.ModelChoiceFilter( + queryset=Part.objects.filter(trackable=True), + label='Part', + field_name='part', + method='filter_part', + ) - TODO: Add filterset class for this view - """ + def filter_part(self, queryset, name, part): + """Filter by the 'part' field. - queryset = PartTestTemplate.objects.all() - serializer_class = part_serializers.PartTestTemplateSerializer - - def filter_queryset(self, queryset): - """Filter the test list queryset. - - If filtering by 'part', we include results for any parts "above" the specified part. + Note that for the 'part' field, we also include any parts "above" the specified part. """ - queryset = super().filter_queryset(queryset) + include_inherited = str2bool( + self.request.query_params.get('include_inherited', True) + ) - params = self.request.query_params + if include_inherited: + return queryset.filter(part__in=part.get_ancestors(include_self=True)) + else: + return queryset.filter(part=part) - part = params.get('part', None) + has_results = rest_filters.BooleanFilter( + label=_('Has Results'), method='filter_has_results' + ) - # Filter by part - if part: - try: - part = Part.objects.get(pk=part) - queryset = queryset.filter( - part__in=part.get_ancestors(include_self=True) - ) - except (ValueError, Part.DoesNotExist): - pass + def filter_has_results(self, queryset, name, value): + """Filter by whether the PartTestTemplate has any associated test results.""" + if str2bool(value): + return queryset.exclude(results=0) + return queryset.filter(results=0) - # Filter by 'required' status - required = params.get('required', None) - if required is not None: - queryset = queryset.filter(required=str2bool(required)) +class PartTestTemplateMixin: + """Mixin class for the PartTestTemplate API endpoints.""" + queryset = PartTestTemplate.objects.all() + serializer_class = part_serializers.PartTestTemplateSerializer + + def get_queryset(self, *args, **kwargs): + """Return an annotated queryset for the PartTestTemplateDetail endpoints.""" + queryset = super().get_queryset(*args, **kwargs) + queryset = part_serializers.PartTestTemplateSerializer.annotate_queryset( + queryset + ) return queryset + +class PartTestTemplateDetail(PartTestTemplateMixin, RetrieveUpdateDestroyAPI): + """Detail endpoint for PartTestTemplate model.""" + + pass + + +class PartTestTemplateList(PartTestTemplateMixin, ListCreateAPI): + """API endpoint for listing (and creating) a PartTestTemplate.""" + + filterset_class = PartTestTemplateFilter + filter_backends = SEARCH_ORDER_FILTER + search_fields = ['test_name', 'description'] + + ordering_fields = [ + 'test_name', + 'required', + 'requires_value', + 'requires_attachment', + 'results', + ] + + ordering = 'test_name' + class PartThumbs(ListAPI): """API endpoint for retrieving information on available Part thumbnails.""" @@ -442,6 +477,15 @@ class PartThumbs(ListAPI): queryset.values('image').annotate(count=Count('image')).order_by('-count') ) + page = self.paginate_queryset(data) + + if page is not None: + serializer = self.get_serializer(page, many=True) + else: + serializer = self.get_serializer(data, many=True) + + data = serializer.data + return Response(data) filter_backends = [InvenTreeSearchFilter] @@ -478,6 +522,7 @@ class PartScheduling(RetrieveAPI): """ queryset = Part.objects.all() + serializer_class = EmptySerializer def retrieve(self, request, *args, **kwargs): """Return scheduling information for the referenced Part instance.""" @@ -678,6 +723,7 @@ class PartRequirements(RetrieveAPI): """ queryset = Part.objects.all() + serializer_class = EmptySerializer def retrieve(self, request, *args, **kwargs): """Construct a response detailing Part requirements.""" @@ -729,6 +775,7 @@ class PartSerialNumberDetail(RetrieveAPI): """API endpoint for returning extra serial number information about a particular part.""" queryset = Part.objects.all() + serializer_class = EmptySerializer def retrieve(self, request, *args, **kwargs): """Return serial number information for the referenced Part instance.""" @@ -1059,7 +1106,11 @@ class PartMixin: # Pass a list of "starred" parts to the current user to the serializer # We do this to reduce the number of database queries required! - if self.starred_parts is None and self.request is not None: + if ( + self.starred_parts is None + and self.request is not None + and hasattr(self.request.user, 'starred_parts') + ): self.starred_parts = [ star.part for star in self.request.user.starred_parts.all() ] @@ -1554,7 +1605,9 @@ class PartParameterList(PartParameterAPIMixin, ListCreateAPI): ordering_field_aliases = { 'name': 'template__name', + 'units': 'template__units', 'data': ['data_numeric', 'data'], + 'part': 'part__name', } search_fields = [ diff --git a/InvenTree/part/filters.py b/InvenTree/part/filters.py index aa0dfd46b7..e16280dbe3 100644 --- a/InvenTree/part/filters.py +++ b/InvenTree/part/filters.py @@ -47,6 +47,25 @@ from InvenTree.status_codes import ( ) +def annotate_in_production_quantity(reference=''): + """Annotate the 'in production' quantity for each part in a queryset. + + Sum the 'quantity' field for all stock items which are 'in production' for each part. + + Arguments: + reference: Reference to the part from the current queryset (default = '') + """ + building_filter = Q( + is_building=True, build__status__in=BuildStatusGroups.ACTIVE_CODES + ) + + return Coalesce( + SubquerySum(f'{reference}stock_items__quantity', filter=building_filter), + Decimal(0), + output_field=DecimalField(), + ) + + def annotate_on_order_quantity(reference: str = ''): """Annotate the 'on order' quantity for each part in a queryset. @@ -150,6 +169,26 @@ def annotate_build_order_allocations(reference: str = ''): ) +def annotate_sales_order_requirements(reference: str = ''): + """Annotate the total quantity of each part required for sales orders. + + - Only interested in 'active' sales orders + - We are looking for any order lines which requires this part + - We are interested in 'quantity'-'shipped' + + """ + # Order filter only returns incomplete shipments for open orders + order_filter = Q(order__status__in=SalesOrderStatusGroups.OPEN) + return Coalesce( + SubquerySum(f'{reference}sales_order_line_items__quantity', filter=order_filter) + - SubquerySum( + f'{reference}sales_order_line_items__shipped', filter=order_filter + ), + Decimal(0), + output_field=models.DecimalField(), + ) + + def annotate_sales_order_allocations(reference: str = ''): """Annotate the total quantity of each part allocated to sales orders. @@ -206,7 +245,9 @@ def annotate_variant_quantity(subquery: Q, reference: str = 'quantity'): Subquery( subquery.annotate( total=Func(F(reference), function='SUM', output_field=FloatField()) - ).values('total') + ) + .values('total') + .order_by() ), 0, output_field=FloatField(), @@ -231,7 +272,9 @@ def annotate_category_parts(): Subquery( subquery.annotate( total=Func(F('pk'), function='COUNT', output_field=IntegerField()) - ).values('total') + ) + .values('total') + .order_by() ), 0, output_field=IntegerField(), diff --git a/InvenTree/part/fixtures/part.yaml b/InvenTree/part/fixtures/part.yaml index f50a48c42d..5acba3e4c5 100644 --- a/InvenTree/part/fixtures/part.yaml +++ b/InvenTree/part/fixtures/part.yaml @@ -181,6 +181,7 @@ name: 'Green chair' description: 'A template chair part which is green' variant_of: 10000 + is_template: true category: 7 trackable: true creation_date: '2030-01-01' diff --git a/InvenTree/part/fixtures/test_templates.yaml b/InvenTree/part/fixtures/test_templates.yaml index aaf11b7974..5427ec4314 100644 --- a/InvenTree/part/fixtures/test_templates.yaml +++ b/InvenTree/part/fixtures/test_templates.yaml @@ -4,30 +4,35 @@ fields: part: 10000 test_name: Test strength of chair + key: 'teststrengthofchair' - model: part.parttesttemplate pk: 2 fields: part: 10000 test_name: Apply paint + key: 'applypaint' - model: part.parttesttemplate pk: 3 fields: part: 10000 test_name: Sew cushion + key: 'sewcushion' - model: part.parttesttemplate pk: 4 fields: part: 10000 test_name: Attach legs + key: 'attachlegs' - model: part.parttesttemplate pk: 5 fields: part: 10000 test_name: Record weight + key: 'recordweight' required: false # Add some tests for one of the variants @@ -35,12 +40,30 @@ pk: 6 fields: part: 10003 - test_name: Check that chair is green + test_name: Check chair is green + key: 'checkchairisgreen' required: true - model: part.parttesttemplate - pk: 7 + pk: 8 fields: - part: 10004 - test_name: Check that chair is especially green + part: 25 + test_name: 'Temperature Test' + key: 'temperaturetest' + required: False + +- model: part.parttesttemplate + pk: 9 + fields: + part: 25 + test_name: 'Settings Checksum' + key: 'settingschecksum' + required: False + +- model: part.parttesttemplate + pk: 10 + fields: + part: 25 + test_name: 'Firmware Version' + key: 'firmwareversion' required: False diff --git a/InvenTree/part/migrations/0020_auto_20190908_0404.py b/InvenTree/part/migrations/0020_auto_20190908_0404.py index 7766ba38f9..725ce67305 100644 --- a/InvenTree/part/migrations/0020_auto_20190908_0404.py +++ b/InvenTree/part/migrations/0020_auto_20190908_0404.py @@ -1,13 +1,6 @@ # Generated by Django 2.2.5 on 2019-09-08 04:04 from django.db import migrations -from part import models - - -def update_tree(apps, schema_editor): - # Update the PartCategory MPTT model - - models.PartCategory.objects.rebuild() class Migration(migrations.Migration): @@ -18,6 +11,4 @@ class Migration(migrations.Migration): ('part', '0019_auto_20190908_0404'), ] - operations = [ - migrations.RunPython(update_tree) - ] + operations = [] diff --git a/InvenTree/part/migrations/0039_auto_20200515_1127.py b/InvenTree/part/migrations/0039_auto_20200515_1127.py index ec97498148..a2a83d093c 100644 --- a/InvenTree/part/migrations/0039_auto_20200515_1127.py +++ b/InvenTree/part/migrations/0039_auto_20200515_1127.py @@ -2,13 +2,6 @@ from django.db import migrations, models -from part.models import Part - - -def update_tree(apps, schema_editor): - # Update the MPTT for Part model - Part.objects.rebuild() - class Migration(migrations.Migration): @@ -43,6 +36,4 @@ class Migration(migrations.Migration): field=models.PositiveIntegerField(db_index=True, default=0, editable=False), preserve_default=False, ), - - migrations.RunPython(update_tree, reverse_code=migrations.RunPython.noop) ] diff --git a/InvenTree/part/migrations/0112_auto_20230525_1606.py b/InvenTree/part/migrations/0112_auto_20230525_1606.py index 43e7d2abf5..c1aebf3866 100644 --- a/InvenTree/part/migrations/0112_auto_20230525_1606.py +++ b/InvenTree/part/migrations/0112_auto_20230525_1606.py @@ -57,7 +57,6 @@ class AddFieldOrSkip(migrations.AddField): try: super().database_forwards(app_label, schema_editor, from_state, to_state) - print(f'Added field {self.name} to model {self.model_name}') except Exception as exc: pass diff --git a/InvenTree/part/migrations/0120_parttesttemplate_key.py b/InvenTree/part/migrations/0120_parttesttemplate_key.py new file mode 100644 index 0000000000..82954ac785 --- /dev/null +++ b/InvenTree/part/migrations/0120_parttesttemplate_key.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.9 on 2024-02-07 03:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0119_auto_20231120_0457'), + ] + + operations = [ + migrations.AddField( + model_name='parttesttemplate', + name='key', + field=models.CharField(blank=True, help_text='Simplified key for the test', max_length=100, verbose_name='Test Key'), + ), + ] diff --git a/InvenTree/part/migrations/0121_auto_20240207_0344.py b/InvenTree/part/migrations/0121_auto_20240207_0344.py new file mode 100644 index 0000000000..6e028a0645 --- /dev/null +++ b/InvenTree/part/migrations/0121_auto_20240207_0344.py @@ -0,0 +1,29 @@ +# Generated by Django 4.2.9 on 2024-02-07 03:44 + +from django.db import migrations + + +def set_key(apps, schema_editor): + """Create a 'key' value for existing PartTestTemplate objects.""" + + import InvenTree.helpers + + PartTestTemplate = apps.get_model('part', 'PartTestTemplate') + + for template in PartTestTemplate.objects.all(): + template.key = InvenTree.helpers.generateTestKey(str(template.test_name).strip()) + template.save() + + if PartTestTemplate.objects.count() > 0: + print(f"\nUpdated 'key' value for {PartTestTemplate.objects.count()} PartTestTemplate objects") + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0120_parttesttemplate_key'), + ] + + operations = [ + migrations.RunPython(set_key, reverse_code=migrations.RunPython.noop) + ] diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 31d4f68232..eaa2613863 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -37,6 +37,7 @@ import common.models import common.settings import InvenTree.conversion import InvenTree.fields +import InvenTree.models import InvenTree.ready import InvenTree.tasks import part.helpers as part_helpers @@ -49,14 +50,6 @@ from company.models import SupplierPart from InvenTree import helpers, validators from InvenTree.fields import InvenTreeURLField from InvenTree.helpers import decimal2money, decimal2string, normalize, str2bool -from InvenTree.models import ( - DataImportMixin, - InvenTreeAttachment, - InvenTreeBarcodeMixin, - InvenTreeNotesMixin, - InvenTreeTree, - MetadataMixin, -) from InvenTree.status_codes import ( BuildStatusGroups, PurchaseOrderStatus, @@ -70,7 +63,7 @@ from stock import models as StockModels logger = logging.getLogger('inventree') -class PartCategory(MetadataMixin, InvenTreeTree): +class PartCategory(InvenTree.models.InvenTreeTree): """PartCategory provides hierarchical organization of Part objects. Attributes: @@ -341,7 +334,13 @@ class PartManager(TreeManager): @cleanup.ignore -class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel): +class Part( + InvenTree.models.InvenTreeBarcodeMixin, + InvenTree.models.InvenTreeNotesMixin, + InvenTree.models.MetadataMixin, + InvenTree.models.PluginValidationMixin, + MPTTModel, +): """The Part object represents an abstract part, the 'concept' of an actual entity. An actual physical instance of a Part is a StockItem which is treated separately. @@ -452,6 +451,7 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) If the part image has been updated, then check if the "old" (previous) image is still used by another part. If not, it is considered "orphaned" and will be deleted. """ + _new = False if self.pk: try: previous = Part.objects.get(pk=self.pk) @@ -470,6 +470,8 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) previous.image.delete(save=False) except Part.DoesNotExist: pass + else: + _new = True self.full_clean() @@ -478,6 +480,10 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) except InvalidMove: raise ValidationError({'variant_of': _('Invalid choice for parent part')}) + if _new: + # Only run if the check was not run previously (due to not existing in the database) + self.ensure_trackable() + def __str__(self): """Return a string representation of the Part (for use in the admin interface).""" return f'{self.full_name} - {self.description}' @@ -742,7 +748,7 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) return stock[0].serial @property - def full_name(self): + def full_name(self) -> str: """Format a 'full name' for this Part based on the format PART_NAME_FORMAT defined in InvenTree settings.""" return part_helpers.render_part_full_name(self) @@ -756,7 +762,7 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) return helpers.getMediaUrl(self.image.url) return helpers.getBlankImage() - def get_thumbnail_url(self): + def get_thumbnail_url(self) -> str: """Return the URL of the image thumbnail for this part.""" if self.image: return helpers.getMediaUrl(self.image.thumbnail.url) @@ -827,6 +833,12 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) # Run custom validation for the name field self.validate_name() + if self.pk: + # Only run if the part already exists in the database + self.ensure_trackable() + + def ensure_trackable(self): + """Ensure that trackable is set correctly downline.""" if self.trackable: for part in self.get_used_in(): if not part.trackable: @@ -3247,7 +3259,7 @@ class PartStocktakeReport(models.Model): ) -class PartAttachment(InvenTreeAttachment): +class PartAttachment(InvenTree.models.InvenTreeAttachment): """Model for storing file attachments against a Part object.""" @staticmethod @@ -3368,7 +3380,7 @@ class PartCategoryStar(models.Model): ) -class PartTestTemplate(MetadataMixin, models.Model): +class PartTestTemplate(InvenTree.models.InvenTreeMetadataModel): """A PartTestTemplate defines a 'template' for a test which is required to be run against a StockItem (an instance of the Part). The test template applies "recursively" to part variants, allowing tests to be @@ -3381,6 +3393,10 @@ class PartTestTemplate(MetadataMixin, models.Model): run on the model (refer to the validate_unique function). """ + def __str__(self): + """Format a string representation of this PartTestTemplate.""" + return ' | '.join([self.part.name, self.test_name]) + @staticmethod def get_api_url(): """Return the list API endpoint URL associated with the PartTestTemplate model.""" @@ -3396,6 +3412,8 @@ class PartTestTemplate(MetadataMixin, models.Model): """Clean fields for the PartTestTemplate model.""" self.test_name = self.test_name.strip() + self.key = helpers.generateTestKey(self.test_name) + self.validate_unique() super().clean() @@ -3406,30 +3424,18 @@ class PartTestTemplate(MetadataMixin, models.Model): 'part': _('Test templates can only be created for trackable parts') }) - # Get a list of all tests "above" this one + # Check that this test is unique within the part tree tests = PartTestTemplate.objects.filter( - part__in=self.part.get_ancestors(include_self=True) - ) + key=self.key, part__tree_id=self.part.tree_id + ).exclude(pk=self.pk) - # If this item is already in the database, exclude it from comparison! - if self.pk is not None: - tests = tests.exclude(pk=self.pk) - - key = self.key - - for test in tests: - if test.key == key: - raise ValidationError({ - 'test_name': _('Test with this name already exists for this part') - }) + if tests.exists(): + raise ValidationError({ + 'test_name': _('Test with this name already exists for this part') + }) super().validate_unique(exclude) - @property - def key(self): - """Generate a key for this test.""" - return helpers.generateTestKey(self.test_name) - part = models.ForeignKey( Part, on_delete=models.CASCADE, @@ -3445,6 +3451,13 @@ class PartTestTemplate(MetadataMixin, models.Model): help_text=_('Enter a name for the test'), ) + key = models.CharField( + blank=True, + max_length=100, + verbose_name=_('Test Key'), + help_text=_('Simplified key for the test'), + ) + description = models.CharField( blank=False, null=True, @@ -3478,7 +3491,7 @@ def validate_template_name(name): """Placeholder for legacy function used in migrations.""" -class PartParameterTemplate(MetadataMixin, models.Model): +class PartParameterTemplate(InvenTree.models.InvenTreeMetadataModel): """A PartParameterTemplate provides a template for key:value pairs for extra parameters fields/values to be added to a Part. This allows users to arbitrarily assign data fields to a Part beyond the built-in attributes. @@ -3623,7 +3636,7 @@ def post_save_part_parameter_template(sender, instance, created, **kwargs): ) -class PartParameter(MetadataMixin, models.Model): +class PartParameter(InvenTree.models.InvenTreeMetadataModel): """A PartParameter is a specific instance of a PartParameterTemplate. It assigns a particular parameter pair to a part. Attributes: @@ -3765,7 +3778,7 @@ class PartParameter(MetadataMixin, models.Model): return part_parameter -class PartCategoryParameterTemplate(MetadataMixin, models.Model): +class PartCategoryParameterTemplate(InvenTree.models.InvenTreeMetadataModel): """A PartCategoryParameterTemplate creates a unique relationship between a PartCategory and a PartParameterTemplate. Multiple PartParameterTemplate instances can be associated to a PartCategory to drive a default list of parameter templates attached to a Part instance upon creation. @@ -3817,7 +3830,11 @@ class PartCategoryParameterTemplate(MetadataMixin, models.Model): ) -class BomItem(DataImportMixin, MetadataMixin, models.Model): +class BomItem( + InvenTree.models.DataImportMixin, + InvenTree.models.MetadataMixin, + InvenTree.models.InvenTreeModel, +): """A BomItem links a part to its component items. A part can have a BOM (bill of materials) which defines @@ -4249,7 +4266,7 @@ def update_pricing_after_delete(sender, instance, **kwargs): instance.part.schedule_pricing_update(create=False) -class BomItemSubstitute(MetadataMixin, models.Model): +class BomItemSubstitute(InvenTree.models.InvenTreeMetadataModel): """A BomItemSubstitute provides a specification for alternative parts, which can be used in a bill of materials. Attributes: @@ -4307,7 +4324,7 @@ class BomItemSubstitute(MetadataMixin, models.Model): ) -class PartRelated(MetadataMixin, models.Model): +class PartRelated(InvenTree.models.InvenTreeMetadataModel): """Store and handle related parts (eg. mating connector, crimps, etc.).""" class Meta: diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index b42dd89607..b636bca568 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -91,7 +91,7 @@ class CategorySerializer(InvenTree.serializers.InvenTreeModelSerializer): if not path_detail: self.fields.pop('path') - def get_starred(self, category): + def get_starred(self, category) -> bool: """Return True if the category is directly "starred" by the current user.""" return category in self.context.get('starred_categories', []) @@ -156,9 +156,20 @@ class PartTestTemplateSerializer(InvenTree.serializers.InvenTreeModelSerializer) 'required', 'requires_value', 'requires_attachment', + 'results', ] key = serializers.CharField(read_only=True) + results = serializers.IntegerField( + label=_('Results'), + help_text=_('Number of results recorded against this template'), + read_only=True, + ) + + @staticmethod + def annotate_queryset(queryset): + """Custom query annotations for the PartTestTemplate serializer.""" + return queryset.annotate(results=SubqueryCount('test_results')) class PartSalePriceSerializer(InvenTree.serializers.InvenTreeModelSerializer): @@ -538,6 +549,7 @@ class PartSerializer( 'category_path', 'component', 'creation_date', + 'creation_user', 'default_expiry', 'default_location', 'default_supplier', @@ -575,6 +587,7 @@ class PartSerializer( 'in_stock', 'ordering', 'required_for_build_orders', + 'required_for_sales_orders', 'stock_item_count', 'suppliers', 'total_in_stock', @@ -715,12 +728,13 @@ class PartSerializer( # Annotate with the total 'required for builds' quantity queryset = queryset.annotate( - required_for_build_orders=part.filters.annotate_build_order_requirements() + required_for_build_orders=part.filters.annotate_build_order_requirements(), + required_for_sales_orders=part.filters.annotate_sales_order_requirements(), ) return queryset - def get_starred(self, part): + def get_starred(self, part) -> bool: """Return "true" if the part is starred by the current user.""" return part in self.starred_parts @@ -738,6 +752,10 @@ class PartSerializer( source='responsible_owner', ) + creation_user = serializers.PrimaryKeyRelatedField( + queryset=users.models.User.objects.all(), required=False, allow_null=True + ) + # Annotated fields allocated_to_build_orders = serializers.FloatField(read_only=True) allocated_to_sales_orders = serializers.FloatField(read_only=True) @@ -745,6 +763,7 @@ class PartSerializer( in_stock = serializers.FloatField(read_only=True) ordering = serializers.FloatField(read_only=True) required_for_build_orders = serializers.IntegerField(read_only=True) + required_for_sales_orders = serializers.IntegerField(read_only=True) stock_item_count = serializers.IntegerField(read_only=True) suppliers = serializers.IntegerField(read_only=True) total_in_stock = serializers.FloatField(read_only=True) @@ -1365,7 +1384,7 @@ class BomItemSerializer(InvenTree.serializers.InvenTreeModelSerializer): sub_part_detail = kwargs.pop('sub_part_detail', False) pricing = kwargs.pop('pricing', True) - super(BomItemSerializer, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) if not part_detail: self.fields.pop('part_detail') @@ -1400,8 +1419,9 @@ class BomItemSerializer(InvenTree.serializers.InvenTreeModelSerializer): sub_part_detail = PartBriefSerializer(source='sub_part', many=False, read_only=True) - on_order = serializers.FloatField(read_only=True) - building = serializers.FloatField(read_only=True) + on_order = serializers.FloatField(label=_('On Order'), read_only=True) + + building = serializers.FloatField(label=_('In Production'), read_only=True) # Cached pricing fields pricing_min = InvenTree.serializers.InvenTreeMoneySerializer( @@ -1412,7 +1432,8 @@ class BomItemSerializer(InvenTree.serializers.InvenTreeModelSerializer): ) # Annotated fields for available stock - available_stock = serializers.FloatField(read_only=True) + available_stock = serializers.FloatField(label=_('Available Stock'), read_only=True) + available_substitute_stock = serializers.FloatField(read_only=True) available_variant_stock = serializers.FloatField(read_only=True) diff --git a/InvenTree/part/test_api.py b/InvenTree/part/test_api.py index 878b27519f..5cc16e74c9 100644 --- a/InvenTree/part/test_api.py +++ b/InvenTree/part/test_api.py @@ -806,14 +806,14 @@ class PartAPITest(PartAPITestBase): response = self.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(len(response.data), 7) + self.assertEqual(len(response.data), 9) # Request for a particular part response = self.get(url, data={'part': 10000}) self.assertEqual(len(response.data), 5) response = self.get(url, data={'part': 10004}) - self.assertEqual(len(response.data), 7) + self.assertEqual(len(response.data), 6) # Try to post a new object (missing description) response = self.post( diff --git a/InvenTree/part/test_migrations.py b/InvenTree/part/test_migrations.py index 313e262773..1a15e57ebf 100644 --- a/InvenTree/part/test_migrations.py +++ b/InvenTree/part/test_migrations.py @@ -229,3 +229,47 @@ class TestPartParameterTemplateMigration(MigratorTestCase): self.assertEqual(template.choices, '') self.assertEqual(template.checkbox, False) + + +class TestPartTestParameterMigration(MigratorTestCase): + """Unit tests for the PartTestTemplate model migrations.""" + + migrate_from = ('part', '0119_auto_20231120_0457') + migrate_to = ('part', '0121_auto_20240207_0344') + + test_keys = { + 'atest': 'A test', + 'someresult': 'Some result', + 'anotherresult': 'Another result', + } + + def prepare(self): + """Setup initial database state.""" + Part = self.old_state.apps.get_model('part', 'part') + PartTestTemplate = self.old_state.apps.get_model('part', 'parttesttemplate') + + # Create a part + p = Part.objects.create( + name='Test Part', + description='A test part', + level=0, + lft=0, + rght=0, + tree_id=0, + ) + + # Create some test templates + for v in self.test_keys.values(): + PartTestTemplate.objects.create( + test_name=v, part=p, description='A test template' + ) + + self.assertEqual(PartTestTemplate.objects.count(), 3) + + def test_key_field(self): + """Self that the key field is created and correctly filled.""" + PartTestTemplate = self.new_state.apps.get_model('part', 'parttesttemplate') + + for key, value in self.test_keys.items(): + template = PartTestTemplate.objects.get(test_name=value) + self.assertEqual(template.key, key) diff --git a/InvenTree/part/test_part.py b/InvenTree/part/test_part.py index c1865b8366..2247d034ec 100644 --- a/InvenTree/part/test_part.py +++ b/InvenTree/part/test_part.py @@ -378,8 +378,8 @@ class TestTemplateTest(TestCase): # Test the lowest-level part which has more associated tests variant = Part.objects.get(pk=10004) - self.assertEqual(variant.getTestTemplates().count(), 7) - self.assertEqual(variant.getTestTemplates(include_parent=False).count(), 1) + self.assertEqual(variant.getTestTemplates().count(), 6) + self.assertEqual(variant.getTestTemplates(include_parent=False).count(), 0) self.assertEqual(variant.getTestTemplates(required=True).count(), 5) def test_uniqueness(self): @@ -389,21 +389,29 @@ class TestTemplateTest(TestCase): with self.assertRaises(ValidationError): PartTestTemplate.objects.create(part=variant, test_name='Record weight') + # Test that error is raised if we try to create a duplicate test name with self.assertRaises(ValidationError): PartTestTemplate.objects.create( - part=variant, test_name='Check that chair is especially green' + part=variant, test_name='Check chair is green' ) # Also should fail if we attempt to create a test that would generate the same key with self.assertRaises(ValidationError): - PartTestTemplate.objects.create( + template = PartTestTemplate.objects.create( part=variant, test_name='ReCoRD weiGHT ' ) + template.clean() + # But we should be able to create a new one! n = variant.getTestTemplates().count() - PartTestTemplate.objects.create(part=variant, test_name='A Sample Test') + template = PartTestTemplate.objects.create( + part=variant, test_name='A Sample Test' + ) + + # Test key should have been saved + self.assertEqual(template.key, 'asampletest') self.assertEqual(variant.getTestTemplates().count(), n + 1) diff --git a/InvenTree/part/test_views.py b/InvenTree/part/test_views.py index ee8e10d978..c96e675405 100644 --- a/InvenTree/part/test_views.py +++ b/InvenTree/part/test_views.py @@ -108,7 +108,7 @@ class PartDetailTest(PartViewTestCase): """Test downloading a BOM for a valid part.""" response = self.client.get( reverse('api-bom-download', args=(1,)), - HTTP_X_REQUESTED_WITH='XMLHttpRequest', + headers={'x-requested-with': 'XMLHttpRequest'}, ) self.assertEqual(response.status_code, 200) self.assertIn('streaming_content', dir(response)) diff --git a/InvenTree/plugin/admin.py b/InvenTree/plugin/admin.py index 102a599da9..49afa1aed6 100644 --- a/InvenTree/plugin/admin.py +++ b/InvenTree/plugin/admin.py @@ -49,15 +49,15 @@ class PluginSettingInline(admin.TabularInline): class PluginConfigAdmin(admin.ModelAdmin): """Custom admin with restricted id fields.""" - readonly_fields = ['key', 'name'] + readonly_fields = ['key', 'name', 'package_name'] list_display = [ 'name', 'key', - '__str__', 'active', 'is_builtin', 'is_sample', 'is_installed', + 'is_package', ] list_filter = ['active'] actions = [plugin_activate, plugin_deactivate] diff --git a/InvenTree/plugin/api.py b/InvenTree/plugin/api.py index 97ca61aadc..a4cf80d497 100644 --- a/InvenTree/plugin/api.py +++ b/InvenTree/plugin/api.py @@ -1,7 +1,10 @@ """API for the plugin app.""" +from django.core.exceptions import ValidationError from django.urls import include, path, re_path +from django.utils.translation import gettext_lazy as _ +from django_filters import rest_framework as rest_filters from django_filters.rest_framework import DjangoFilterBackend from drf_spectacular.utils import extend_schema from rest_framework import permissions, status @@ -13,7 +16,6 @@ import plugin.serializers as PluginSerializers from common.api import GlobalSettingsPermissions from InvenTree.api import MetadataView from InvenTree.filters import SEARCH_ORDER_FILTER -from InvenTree.helpers import str2bool from InvenTree.mixins import ( CreateAPI, ListAPI, @@ -30,6 +32,87 @@ from plugin.models import PluginConfig, PluginSetting from plugin.plugin import InvenTreePlugin +class PluginFilter(rest_filters.FilterSet): + """Filter for the PluginConfig model. + + Provides custom filtering options for the FilterList API endpoint. + """ + + class Meta: + """Meta for the filter.""" + + model = PluginConfig + fields = ['active'] + + mixin = rest_filters.CharFilter( + field_name='mixin', method='filter_mixin', label='Mixin' + ) + + def filter_mixin(self, queryset, name, value): + """Filter by implement mixin. + + - A comma-separated list of mixin names can be provided. + - Only plugins which implement all of the provided mixins will be returned. + """ + matches = [] + mixins = [x.strip().lower() for x in value.split(',') if x] + + for result in queryset: + match = True + + for mixin in mixins: + if mixin not in result.mixins().keys(): + match = False + break + + if match: + matches.append(result.pk) + + return queryset.filter(pk__in=matches) + + builtin = rest_filters.BooleanFilter( + field_name='builtin', label='Builtin', method='filter_builtin' + ) + + def filter_builtin(self, queryset, name, value): + """Filter by 'builtin' flag.""" + matches = [] + + for result in queryset: + if result.is_builtin() == value: + matches.append(result.pk) + + return queryset.filter(pk__in=matches) + + sample = rest_filters.BooleanFilter( + field_name='sample', label='Sample', method='filter_sample' + ) + + def filter_sample(self, queryset, name, value): + """Filter by 'sample' flag.""" + matches = [] + + for result in queryset: + if result.is_sample() == value: + matches.append(result.pk) + + return queryset.filter(pk__in=matches) + + installed = rest_filters.BooleanFilter( + field_name='installed', label='Installed', method='filter_installed' + ) + + def filter_installed(self, queryset, name, value): + """Filter by 'installed' flag.""" + matches = [] + + for result in queryset: + if result.is_installed() == value: + matches.append(result.pk) + + return queryset.filter(pk__in=matches) + + class PluginList(ListAPI): """API endpoint for list of PluginConfig objects. @@ -41,70 +124,11 @@ class PluginList(ListAPI): # e.g. determining which label printing plugins are available permission_classes = [permissions.IsAuthenticated] + filterset_class = PluginFilter + serializer_class = PluginSerializers.PluginConfigSerializer queryset = PluginConfig.objects.all() - def filter_queryset(self, queryset): - """Filter for API requests. - - Filter by mixin with the `mixin` flag - """ - queryset = super().filter_queryset(queryset) - - params = self.request.query_params - - # Filter plugins which support a given mixin - mixin = params.get('mixin', None) - - if mixin: - matches = [] - - for result in queryset: - if mixin in result.mixins().keys(): - matches.append(result.pk) - - queryset = queryset.filter(pk__in=matches) - - # Filter queryset by 'builtin' flag - # We cannot do this using normal filters as it is not a database field - if 'builtin' in params: - builtin = str2bool(params['builtin']) - - matches = [] - - for result in queryset: - if result.is_builtin() == builtin: - matches.append(result.pk) - - queryset = queryset.filter(pk__in=matches) - - # Filter queryset by 'sample' flag - # We cannot do this using normal filters as it is not a database field - if 'sample' in params: - sample = str2bool(params['sample']) - - matches = [] - - for result in queryset: - if result.is_sample() == sample: - matches.append(result.pk) - - queryset = queryset.filter(pk__in=matches) - - # Filter queryset by 'installed' flag - if 'installed' in params: - installed = str2bool(params['installed']) - - matches = [] - - for result in queryset: - if result.is_installed() == installed: - matches.append(result.pk) - - queryset = queryset.filter(pk__in=matches) - - return queryset - filter_backends = SEARCH_ORDER_FILTER filterset_fields = ['active'] @@ -132,6 +156,20 @@ class PluginDetail(RetrieveUpdateDestroyAPI): queryset = PluginConfig.objects.all() serializer_class = PluginSerializers.PluginConfigSerializer + def delete(self, request, *args, **kwargs): + """Handle DELETE request for a PluginConfig instance. + + We only allow plugin deletion if the plugin is not active. + """ + cfg = self.get_object() + + if cfg.active: + raise ValidationError({ + 'detail': _('Plugin cannot be deleted as it is currently active') + }) + + return super().delete(request, *args, **kwargs) + class PluginInstall(CreateAPI): """Endpoint for installing a new plugin.""" @@ -156,6 +194,18 @@ class PluginInstall(CreateAPI): return serializer.save() +class PluginUninstall(UpdateAPI): + """Endpoint for uninstalling a single plugin.""" + + queryset = PluginConfig.objects.all() + serializer_class = PluginSerializers.PluginUninstallSerializer + permission_classes = [IsSuperuser] + + def perform_update(self, serializer): + """Uninstall the plugin.""" + serializer.save() + + class PluginActivate(UpdateAPI): """Endpoint for activating a plugin. @@ -398,6 +448,11 @@ plugin_api_urls = [ PluginActivate.as_view(), name='api-plugin-detail-activate', ), + path( + 'uninstall/', + PluginUninstall.as_view(), + name='api-plugin-uninstall', + ), path('', PluginDetail.as_view(), name='api-plugin-detail'), ]), ), diff --git a/InvenTree/plugin/base/action/api.py b/InvenTree/plugin/base/action/api.py index 37dabd9eda..7e3df03352 100644 --- a/InvenTree/plugin/base/action/api.py +++ b/InvenTree/plugin/base/action/api.py @@ -2,17 +2,25 @@ from django.utils.translation import gettext_lazy as _ -from rest_framework import permissions +from rest_framework import permissions, serializers +from rest_framework.generics import GenericAPIView from rest_framework.response import Response -from rest_framework.views import APIView from plugin import registry -class ActionPluginView(APIView): +class ActionPluginSerializer(serializers.Serializer): + """Serializer for the ActionPluginView responses.""" + + action = serializers.CharField() + data = serializers.DictField() + + +class ActionPluginView(GenericAPIView): """Endpoint for running custom action plugins.""" permission_classes = [permissions.IsAuthenticated] + serializer_class = ActionPluginSerializer def post(self, request, *args, **kwargs): """This function checks if all required info was submitted and then performs a plugin_action or returns an error.""" diff --git a/InvenTree/plugin/base/barcodes/mixins.py b/InvenTree/plugin/base/barcodes/mixins.py index a8f7710ec4..58f91942f0 100644 --- a/InvenTree/plugin/base/barcodes/mixins.py +++ b/InvenTree/plugin/base/barcodes/mixins.py @@ -224,9 +224,9 @@ class SupplierBarcodeMixin(BarcodeMixin): return None if supplier_pk := self.get_setting('SUPPLIER_ID'): - if supplier := Company.objects.get(pk=supplier_pk): - return supplier - else: + try: + return Company.objects.get(pk=supplier_pk) + except Company.DoesNotExist: logger.error( 'No company with pk %d (set "SUPPLIER_ID" setting to a valid value)', supplier_pk, diff --git a/InvenTree/plugin/base/event/events.py b/InvenTree/plugin/base/event/events.py index c1699fbeb0..125d1b17bf 100644 --- a/InvenTree/plugin/base/event/events.py +++ b/InvenTree/plugin/base/event/events.py @@ -7,6 +7,7 @@ from django.db import transaction from django.db.models.signals import post_delete, post_save from django.dispatch.dispatcher import receiver +import InvenTree.exceptions from InvenTree.ready import canAppAccessDatabase, isImportingData from InvenTree.tasks import offload_task from plugin.registry import registry @@ -89,15 +90,22 @@ def process_event(plugin_slug, event, *args, **kwargs): This function is run by the background worker process. This function may queue multiple functions to be handled by the background worker. """ - plugin = registry.plugins.get(plugin_slug, None) + plugin = registry.get_plugin(plugin_slug) if plugin is None: # pragma: no cover logger.error("Could not find matching plugin for '%s'", plugin_slug) return - plugin.process_event(event, *args, **kwargs) logger.debug("Plugin '%s' is processing triggered event '%s'", plugin_slug, event) + try: + plugin.process_event(event, *args, **kwargs) + except Exception as e: + # Log the exception to the database + InvenTree.exceptions.log_error(f'plugins.{plugin_slug}.process_event') + # Re-throw the exception so that the background worker tries again + raise Exception + def allow_table_event(table_name): """Determine if an automatic event should be fired for a given table. diff --git a/InvenTree/plugin/base/event/mixins.py b/InvenTree/plugin/base/event/mixins.py index 8f17199c5f..51c526ec7a 100644 --- a/InvenTree/plugin/base/event/mixins.py +++ b/InvenTree/plugin/base/event/mixins.py @@ -9,7 +9,7 @@ class EventMixin: Implementing classes must provide a "process_event" function: """ - def wants_process_event(self, event): + def wants_process_event(self, event: str) -> bool: """Function to subscribe to events. Return true if you're interested in the given event, false if not. @@ -17,7 +17,7 @@ class EventMixin: # Default implementation always returns true (backwards compatibility) return True - def process_event(self, event, *args, **kwargs): + def process_event(self, event: str, *args, **kwargs) -> None: """Function to handle events. Must be overridden by plugin diff --git a/InvenTree/plugin/base/integration/APICallMixin.py b/InvenTree/plugin/base/integration/APICallMixin.py index 67c8f165ce..77131f2491 100644 --- a/InvenTree/plugin/base/integration/APICallMixin.py +++ b/InvenTree/plugin/base/integration/APICallMixin.py @@ -2,6 +2,7 @@ import json as json_pkg import logging +from collections.abc import Iterable import requests @@ -107,7 +108,9 @@ class APICallMixin: """Returns an encoded path for the provided dict.""" groups = [] for key, val in arguments.items(): - groups.append(f'{key}={",".join([str(a) for a in val])}') + if isinstance(val, Iterable) and not isinstance(val, str): + val = ','.join([str(a) for a in val]) + groups.append(f'{key}={val}') return f'?{"&".join(groups)}' def api_call( diff --git a/InvenTree/plugin/base/integration/SettingsMixin.py b/InvenTree/plugin/base/integration/SettingsMixin.py index 64aa76e473..d5a5ec9a5e 100644 --- a/InvenTree/plugin/base/integration/SettingsMixin.py +++ b/InvenTree/plugin/base/integration/SettingsMixin.py @@ -1,7 +1,7 @@ """Plugin mixin class for SettingsMixin.""" import logging -from typing import TYPE_CHECKING, Dict +from typing import TYPE_CHECKING from django.db.utils import OperationalError, ProgrammingError @@ -21,7 +21,7 @@ else: class SettingsMixin: """Mixin that enables global settings for the plugin.""" - SETTINGS: Dict[str, SettingsKeyType] = {} + SETTINGS: dict[str, SettingsKeyType] = {} class MixinMeta: """Meta for mixin.""" @@ -75,12 +75,11 @@ class SettingsMixin: def set_setting(self, key, value, user=None): """Set plugin setting value by key.""" - from plugin.models import PluginConfig, PluginSetting + from plugin.models import PluginSetting + from plugin.registry import registry try: - plugin, _ = PluginConfig.objects.get_or_create( - key=self.plugin_slug(), name=self.plugin_name() - ) + plugin = registry.get_plugin_config(self.plugin_slug(), self.plugin_name()) except (OperationalError, ProgrammingError): # pragma: no cover plugin = None diff --git a/InvenTree/plugin/base/integration/ValidationMixin.py b/InvenTree/plugin/base/integration/ValidationMixin.py index 0695bd27e2..285069b9f2 100644 --- a/InvenTree/plugin/base/integration/ValidationMixin.py +++ b/InvenTree/plugin/base/integration/ValidationMixin.py @@ -1,5 +1,7 @@ """Validation mixin class definition.""" +from django.core.exceptions import ValidationError + import part.models import stock.models @@ -7,7 +9,10 @@ import stock.models class ValidationMixin: """Mixin class that allows custom validation for various parts of InvenTree. - Custom generation and validation functionality can be provided for: + Any model which inherits from the PluginValidationMixin class is exposed here, + via the 'validate_model_instance' method (see below). + + Additionally, custom generation and validation functionality is provided for: - Part names - Part IPN (internal part number) values @@ -40,6 +45,28 @@ class ValidationMixin: super().__init__() self.add_mixin('validation', True, __class__) + def raise_error(self, message): + """Raise a ValidationError with the given message.""" + raise ValidationError(message) + + def validate_model_instance(self, instance, deltas=None): + """Run custom validation on a database model instance. + + This method is called when a model instance is being validated. + It allows the plugin to raise a ValidationError on any field in the model. + + Arguments: + instance: The model instance to validate + deltas: A dictionary of field names and updated values (if the instance is being updated) + + Returns: + None or True (refer to class docstring) + + Raises: + ValidationError if the instance is invalid + """ + return None + def validate_part_name(self, name: str, part: part.models.Part): """Perform validation on a proposed Part name. diff --git a/InvenTree/plugin/base/integration/test_mixins.py b/InvenTree/plugin/base/integration/test_mixins.py index 9d40b18b1e..ebee35999d 100644 --- a/InvenTree/plugin/base/integration/test_mixins.py +++ b/InvenTree/plugin/base/integration/test_mixins.py @@ -263,14 +263,17 @@ class APICallMixinTest(BaseMixinDefinition, TestCase): """Test that building up args work.""" # api_build_url_args # 1 arg - result = self.mixin.api_build_url_args({'a': 'b'}) - self.assertEqual(result, '?a=b') + result = self.mixin.api_build_url_args({'a': 'abc123'}) + self.assertEqual(result, '?a=abc123') + # non string arg + result = self.mixin.api_build_url_args({'a': 1}) + self.assertEqual(result, '?a=1') # more args - result = self.mixin.api_build_url_args({'a': 'b', 'c': 'd'}) - self.assertEqual(result, '?a=b&c=d') + result = self.mixin.api_build_url_args({'a': 'b', 'c': 42}) + self.assertEqual(result, '?a=b&c=42') # list args - result = self.mixin.api_build_url_args({'a': 'b', 'c': ['d', 'e', 'f']}) - self.assertEqual(result, '?a=b&c=d,e,f') + result = self.mixin.api_build_url_args({'a': 'b', 'c': ['d', 'efgh', 1337]}) + self.assertEqual(result, '?a=b&c=d,efgh,1337') def test_api_call(self): """Test that api calls work.""" @@ -348,12 +351,16 @@ class PanelMixinTests(InvenTreeTestCase): """Test that the sample panel plugin is installed.""" plugins = registry.with_mixin('panel') - self.assertTrue(len(plugins) > 0) + self.assertTrue(len(plugins) == 0) + + # Now enable the plugin + registry.set_plugin_state('samplepanel', True) + plugins = registry.with_mixin('panel') self.assertIn('samplepanel', [p.slug for p in plugins]) - plugins = registry.with_mixin('panel', active=True) - + # Find 'inactive' plugins (should be None) + plugins = registry.with_mixin('panel', active=False) self.assertEqual(len(plugins), 0) def test_disabled(self): diff --git a/InvenTree/plugin/base/label/mixins.py b/InvenTree/plugin/base/label/mixins.py index 975cf66985..c4bffc9801 100644 --- a/InvenTree/plugin/base/label/mixins.py +++ b/InvenTree/plugin/base/label/mixins.py @@ -2,17 +2,26 @@ from typing import Union +from django.core.exceptions import ValidationError +from django.db.models.query import QuerySet from django.http import JsonResponse +from django.utils.translation import gettext_lazy as _ import pdf2image from rest_framework import serializers from rest_framework.request import Request +from build.models import BuildLine from common.models import InvenTreeSetting +from InvenTree.exceptions import log_error from InvenTree.tasks import offload_task from label.models import LabelTemplate +from part.models import Part from plugin.base.label import label as plugin_label from plugin.helpers import MixinNotImplementedError +from stock.models import StockItem, StockLocation + +LabelItemType = Union[StockItem, StockLocation, Part, BuildLine] class LabelPrintingMixin: @@ -47,7 +56,11 @@ class LabelPrintingMixin: label: The LabelTemplate object to render request: The HTTP request object which triggered this print job """ - return label.render(request) + try: + return label.render(request) + except Exception as e: + log_error('label.render_to_pdf') + raise ValidationError(_('Error rendering label to PDF')) def render_to_html(self, label: LabelTemplate, request, **kwargs): """Render this label to HTML format. @@ -56,10 +69,26 @@ class LabelPrintingMixin: label: The LabelTemplate object to render request: The HTTP request object which triggered this print job """ - return label.render_as_string(request) + try: + return label.render_as_string(request) + except Exception as e: + log_error('label.render_to_html') + raise ValidationError(_('Error rendering label to HTML')) def render_to_png(self, label: LabelTemplate, request=None, **kwargs): - """Render this label to PNG format.""" + """Render this label to PNG format. + + Arguments: + label: The LabelTemplate object to render + request: The HTTP request object which triggered this print job + Keyword Arguments: + pdf_data: The raw PDF data of the rendered label (if already rendered) + dpi: The DPI to use for the PNG rendering + use_cairo (bool): Whether to use the pdftocairo backend for rendering which provides better results in tests, + see [#6488](https://github.com/inventree/InvenTree/pull/6488) for details. If False, pdftoppm is used (default: True) + pdf2image_kwargs (dict): Additional keyword arguments to pass to the + [`pdf2image.convert_from_bytes`](https://pdf2image.readthedocs.io/en/latest/reference.html#pdf2image.pdf2image.convert_from_bytes) method (optional) + """ # Check if pdf data is provided pdf_data = kwargs.get('pdf_data', None) @@ -68,18 +97,24 @@ class LabelPrintingMixin: self.render_to_pdf(label, request, **kwargs).get_document().write_pdf() ) - dpi = kwargs.get('dpi', InvenTreeSetting.get_setting('LABEL_DPI', 300)) + pdf2image_kwargs = { + 'dpi': kwargs.get('dpi', InvenTreeSetting.get_setting('LABEL_DPI', 300)), + 'use_pdftocairo': kwargs.get('use_cairo', True), + **kwargs.get('pdf2image_kwargs', {}), + } # Convert to png data - png = pdf2image.convert_from_bytes(pdf_data, dpi=dpi)[0] - return png + try: + return pdf2image.convert_from_bytes(pdf_data, **pdf2image_kwargs)[0] + except Exception as e: + log_error('label.render_to_png') + raise ValidationError(_('Error rendering label to PNG')) def print_labels( self, label: LabelTemplate, - items: list, + items: QuerySet[LabelItemType], request: Request, - printing_options: dict, **kwargs, ): """Print one or more labels with the provided template and items. @@ -121,7 +156,7 @@ class LabelPrintingMixin: 'user': user, 'width': label.width, 'height': label.height, - 'printing_options': printing_options, + 'printing_options': kwargs['printing_options'], } if self.BLOCKING_PRINT: diff --git a/InvenTree/plugin/base/label/test_label_mixin.py b/InvenTree/plugin/base/label/test_label_mixin.py index dbb73713f5..17d9a2343f 100644 --- a/InvenTree/plugin/base/label/test_label_mixin.py +++ b/InvenTree/plugin/base/label/test_label_mixin.py @@ -81,12 +81,12 @@ class LabelMixinTests(InvenTreeAPITestCase): def test_installed(self): """Test that the sample printing plugin is installed.""" # Get all label plugins - plugins = registry.with_mixin('labels') - self.assertEqual(len(plugins), 3) + plugins = registry.with_mixin('labels', active=None) + self.assertEqual(len(plugins), 4) # But, it is not 'active' plugins = registry.with_mixin('labels', active=True) - self.assertEqual(len(plugins), 2) + self.assertEqual(len(plugins), 3) def test_api(self): """Test that we can filter the API endpoint by mixin.""" @@ -110,7 +110,7 @@ class LabelMixinTests(InvenTreeAPITestCase): # Should be available via the API now response = self.client.get(url, {'mixin': 'labels', 'active': True}) - self.assertEqual(len(response.data), 3) + self.assertEqual(len(response.data), 4) labels = [item['key'] for item in response.data] diff --git a/InvenTree/plugin/base/locate/api.py b/InvenTree/plugin/base/locate/api.py index c3f921d010..8d37505b3a 100644 --- a/InvenTree/plugin/base/locate/api.py +++ b/InvenTree/plugin/base/locate/api.py @@ -1,22 +1,37 @@ """API for location plugins.""" -from rest_framework import permissions +from drf_spectacular.utils import OpenApiResponse, extend_schema +from rest_framework import permissions, serializers from rest_framework.exceptions import NotFound, ParseError +from rest_framework.generics import GenericAPIView from rest_framework.response import Response -from rest_framework.views import APIView from InvenTree.tasks import offload_task from plugin.registry import registry from stock.models import StockItem, StockLocation -class LocatePluginView(APIView): +class LocatePluginSerializer(serializers.Serializer): + """Serializer for the LocatePluginView API endpoint.""" + + plugin = serializers.CharField( + help_text='Plugin to use for location identification' + ) + item = serializers.IntegerField(required=False, help_text='StockItem to identify') + location = serializers.IntegerField( + required=False, help_text='StockLocation to identify' + ) + + +class LocatePluginView(GenericAPIView): """Endpoint for using a custom plugin to identify or 'locate' a stock item or location.""" permission_classes = [permissions.IsAuthenticated] + serializer_class = LocatePluginSerializer def post(self, request, *args, **kwargs): - """Check inputs and offload the task to the plugin.""" + """Identify or 'locate' a stock item or location with a plugin.""" + # Check inputs and offload the task to the plugin # Which plugin to we wish to use? plugin = request.data.get('plugin', None) diff --git a/InvenTree/plugin/builtin/integration/core_notifications.py b/InvenTree/plugin/builtin/integration/core_notifications.py index e882562ba2..298677c4ec 100644 --- a/InvenTree/plugin/builtin/integration/core_notifications.py +++ b/InvenTree/plugin/builtin/integration/core_notifications.py @@ -133,7 +133,7 @@ class InvenTreeCoreNotificationsPlugin( def send_bulk(self): """Send the notifications out via slack.""" - instance = registry.plugins.get(self.get_plugin().NAME.lower()) + instance = registry.get_plugin(self.get_plugin().NAME.lower()) url = instance.get_setting('NOTIFICATION_SLACK_URL') if not url: diff --git a/InvenTree/plugin/builtin/integration/test_core_notifications.py b/InvenTree/plugin/builtin/integration/test_core_notifications.py index 2c6e9f9455..62d1c2b1ed 100644 --- a/InvenTree/plugin/builtin/integration/test_core_notifications.py +++ b/InvenTree/plugin/builtin/integration/test_core_notifications.py @@ -19,7 +19,7 @@ class CoreNotificationTestTests(BaseNotificationIntegrationTest): self.assertEqual(len(mail.outbox), 0) # enable plugin and set mail setting to true - plugin = registry.plugins.get('inventreecorenotificationsplugin') + plugin = registry.get_plugin('inventreecorenotificationsplugin') plugin.set_setting('ENABLE_NOTIFICATION_EMAILS', True) NotificationUserSetting.set_setting( key='NOTIFICATION_METHOD_MAIL', diff --git a/InvenTree/plugin/builtin/labels/inventree_machine.py b/InvenTree/plugin/builtin/labels/inventree_machine.py new file mode 100644 index 0000000000..1d5d8c6651 --- /dev/null +++ b/InvenTree/plugin/builtin/labels/inventree_machine.py @@ -0,0 +1,182 @@ +"""Label printing plugin that provides support for printing using a label printer machine.""" + +from typing import cast + +from django.http import JsonResponse +from django.utils.translation import gettext_lazy as _ + +from rest_framework import serializers + +from common.models import InvenTreeUserSetting +from InvenTree.serializers import DependentField +from InvenTree.tasks import offload_task +from label.models import LabelTemplate +from machine.machine_types import LabelPrinterBaseDriver, LabelPrinterMachine +from plugin import InvenTreePlugin +from plugin.machine import registry +from plugin.mixins import LabelPrintingMixin + + +def get_machine_and_driver(machine_pk: str): + """Get the driver by machine pk and ensure that it is a label printing driver.""" + machine = registry.get_machine(machine_pk) + + # machine should be valid due to the machine select field validator + if machine is None: # pragma: no cover + return None, None + + if machine.SLUG != 'label-printer': # pragma: no cover + return None, None + + machine = cast(LabelPrinterMachine, machine) + driver = machine.driver + + if driver is None: # pragma: no cover + return machine, None + + return machine, cast(LabelPrinterBaseDriver, driver) + + +def get_last_used_printers(user): + """Get the last used printers for a specific user.""" + return [ + printer + for printer in cast( + str, + InvenTreeUserSetting.get_setting( + 'LAST_USED_PRINTING_MACHINES', '', user=user + ), + ).split(',') + if printer + ] + + +class InvenTreeLabelPlugin(LabelPrintingMixin, InvenTreePlugin): + """Builtin plugin for machine label printing. + + This enables machines to print labels. + """ + + NAME = 'InvenTreeLabelMachine' + TITLE = _('InvenTree machine label printer') + DESCRIPTION = _('Provides support for printing using a machine') + VERSION = '1.0.0' + AUTHOR = _('InvenTree contributors') + + def print_labels(self, label: LabelTemplate, items, request, **kwargs): + """Print labels implementation that calls the correct machine driver print_labels method.""" + machine, driver = get_machine_and_driver( + kwargs['printing_options'].get('machine', '') + ) + + # the driver and machine should be valid due to the machine select field validator + if driver is None or machine is None: # pragma: no cover + return None + + print_kwargs = { + **kwargs, + 'printing_options': kwargs['printing_options'].get('driver_options', {}), + } + + # save the current used printer as last used printer + # only the last ten used printers are saved so that this list doesn't grow infinitely + last_used_printers = get_last_used_printers(request.user) + machine_pk = str(machine.pk) + if machine_pk in last_used_printers: + last_used_printers.remove(machine_pk) + last_used_printers.insert(0, machine_pk) + InvenTreeUserSetting.set_setting( + 'LAST_USED_PRINTING_MACHINES', + ','.join(last_used_printers[:10]), + user=request.user, + ) + + # execute the print job + if driver.USE_BACKGROUND_WORKER is False: + return driver.print_labels(machine, label, items, request, **print_kwargs) + + offload_task( + driver.print_labels, machine, label, items, request, **print_kwargs + ) + + return JsonResponse({ + 'success': True, + 'message': f'{len(items)} labels printed', + }) + + class PrintingOptionsSerializer(serializers.Serializer): + """Printing options serializer that adds a machine select and the machines options.""" + + def __init__(self, *args, **kwargs): + """Custom __init__ method to dynamically override the machine choices based on the request.""" + super().__init__(*args, **kwargs) + + view = kwargs['context']['view'] + template = view.get_object() + items_to_print = view.get_items() + + # get all available printers for each driver + machines: list[LabelPrinterMachine] = [] + for driver in cast( + list[LabelPrinterBaseDriver], registry.get_drivers('label-printer') + ): + machines.extend( + driver.get_printers( + template, items_to_print, request=kwargs['context']['request'] + ) + ) + + # sort the last used printers for the user to the top + user = kwargs['context']['request'].user + last_used_printers = get_last_used_printers(user)[::-1] + machines = sorted( + machines, + key=lambda m: last_used_printers.index(str(m.pk)) + if str(m.pk) in last_used_printers + else -1, + reverse=True, + ) + + choices = [(str(m.pk), self.get_printer_name(m)) for m in machines] + + # if there are choices available, use the first as default + if len(choices) > 0: + self.fields['machine'].default = choices[0][0] + + # add 'last used' flag to the first choice + if choices[0][0] in last_used_printers: + choices[0] = ( + choices[0][0], + choices[0][1] + ' (' + _('last used') + ')', + ) + + self.fields['machine'].choices = choices + + def get_printer_name(self, machine: LabelPrinterMachine): + """Construct the printers name.""" + name = machine.name + + if machine.location: + name += f' @ {machine.location.name}' + + return name + + machine = serializers.ChoiceField(choices=[]) + + driver_options = DependentField( + label=_('Options'), + depends_on=['machine'], + field_serializer='get_driver_options', + required=False, + ) + + def get_driver_options(self, fields): + """Returns the selected machines serializer.""" + _, driver = get_machine_and_driver(fields['machine']) + + if driver is None: + return None + + return driver.get_printing_options_serializer( + self.context['request'], context=self.context + ) diff --git a/InvenTree/plugin/helpers.py b/InvenTree/plugin/helpers.py index 211641514a..f9c1321d8d 100644 --- a/InvenTree/plugin/helpers.py +++ b/InvenTree/plugin/helpers.py @@ -12,7 +12,7 @@ from importlib.metadata import entry_points from django import template from django.conf import settings from django.core.exceptions import AppRegistryNotReady -from django.db.utils import IntegrityError +from django.db.utils import IntegrityError, OperationalError, ProgrammingError logger = logging.getLogger('inventree') @@ -145,6 +145,8 @@ def get_git_log(path): datetime.datetime.fromtimestamp(commit.author_time).isoformat(), commit.message.decode().split('\n')[0], ] + except KeyError as err: + logger.debug('No HEAD tag found in git repo at path %s', path) except NotGitRepository: pass diff --git a/InvenTree/plugin/installer.py b/InvenTree/plugin/installer.py index 057b4e612b..b7e7c772a2 100644 --- a/InvenTree/plugin/installer.py +++ b/InvenTree/plugin/installer.py @@ -9,6 +9,9 @@ from django.conf import settings from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ +import plugin.models +from InvenTree.exceptions import log_error + logger = logging.getLogger('inventree') @@ -32,6 +35,33 @@ def pip_command(*args): ) +def handle_pip_error(error, path: str) -> list: + """Raise a ValidationError when the pip command fails. + + - Log the error to the database + - Format the output from a pip command into a list of error messages. + - Raise an appropriate error + """ + log_error(path) + + output = error.output.decode('utf-8') + + logger.error('Pip command failed: %s', output) + + errors = [] + + for line in output.split('\n'): + line = line.strip() + + if line: + errors.append(line) + + if len(errors) > 1: + raise ValidationError(errors) + else: + raise ValidationError(errors[0]) + + def check_package_path(packagename: str): """Determine the install path of a particular package. @@ -57,6 +87,8 @@ def check_package_path(packagename: str): return match.group(1) except subprocess.CalledProcessError as error: + log_error('check_package_path') + output = error.output.decode('utf-8') logger.exception('Plugin lookup failed: %s', str(output)) return False @@ -80,16 +112,18 @@ def install_plugins_file(): except subprocess.CalledProcessError as error: output = error.output.decode('utf-8') logger.exception('Plugin file installation failed: %s', str(output)) + log_error('pip') return False except Exception as exc: logger.exception('Plugin file installation failed: %s', exc) + log_error('pip') return False # At this point, the plugins file has been installed return True -def add_plugin_to_file(install_name): +def update_plugins_file(install_name, remove=False): """Add a plugin to the plugins file.""" logger.info('Adding plugin to plugins file: %s', install_name) @@ -99,6 +133,10 @@ def add_plugin_to_file(install_name): logger.warning('Plugin file %s does not exist', str(pf)) return + def compare_line(line: str): + """Check if a line in the file matches the installname.""" + return line.strip().split('==')[0] == install_name.split('==')[0] + # First, read in existing plugin file try: with pf.open(mode='r') as f: @@ -107,19 +145,34 @@ def add_plugin_to_file(install_name): logger.exception('Failed to read plugins file: %s', str(exc)) return + # Reconstruct output file + output = [] + + found = False + # Check if plugin is already in file for line in lines: - if line.strip() == install_name: - logger.debug('Plugin already exists in file') - return + # Ignore processing for any commented lines + if line.strip().startswith('#'): + output.append(line) + continue + + if compare_line(line): + found = True + if not remove: + # Replace line with new install name + output.append(install_name) + else: + output.append(line) # Append plugin to file - lines.append(f'{install_name}') + if not found and not remove: + output.append(install_name) # Write file back to disk try: with pf.open(mode='w') as f: - for line in lines: + for line in output: f.write(line) if not line.endswith('\n'): @@ -128,19 +181,19 @@ def add_plugin_to_file(install_name): logger.exception('Failed to add plugin to plugins file: %s', str(exc)) -def install_plugin(url=None, packagename=None, user=None): +def install_plugin(url=None, packagename=None, user=None, version=None): """Install a plugin into the python virtual environment. - Rules: - - A staff user account is required - - We must detect that we are running within a virtual environment + Args: + packagename: Optional package name to install + url: Optional URL to install from + user: Optional user performing the installation + version: Optional version specifier """ if user and not user.is_staff: - raise ValidationError( - _('Permission denied: only staff users can install plugins') - ) + raise ValidationError(_('Only staff users can administer plugins')) - logger.debug('install_plugin: %s, %s', url, packagename) + logger.info('install_plugin: %s, %s', url, packagename) # Check if we are running in a virtual environment # For now, just log a warning @@ -178,6 +231,9 @@ def install_plugin(url=None, packagename=None, user=None): # use pypi full_pkg = packagename + if version: + full_pkg = f'{full_pkg}=={version}' + install_name.append(full_pkg) ret = {} @@ -195,26 +251,10 @@ def install_plugin(url=None, packagename=None, user=None): ret['result'] = _(f'Installed plugin into {path}') except subprocess.CalledProcessError as error: - # If an error was thrown, we need to parse the output - - output = error.output.decode('utf-8') - logger.exception('Plugin installation failed: %s', str(output)) - - errors = [_('Plugin installation failed')] - - for msg in output.split('\n'): - msg = msg.strip() - - if msg: - errors.append(msg) - - if len(errors) > 1: - raise ValidationError(errors) - else: - raise ValidationError(errors[0]) + handle_pip_error(error, 'plugin_install') # Save plugin to plugins file - add_plugin_to_file(full_pkg) + update_plugins_file(full_pkg) # Reload the plugin registry, to discover the new plugin from plugin.registry import registry @@ -222,3 +262,67 @@ def install_plugin(url=None, packagename=None, user=None): registry.reload_plugins(full_reload=True, force_reload=True, collect=True) return ret + + +def validate_package_plugin(cfg: plugin.models.PluginConfig, user=None): + """Validate a package plugin for update or removal.""" + if not cfg.plugin: + raise ValidationError(_('Plugin was not found in registry')) + + if not cfg.is_package(): + raise ValidationError(_('Plugin is not a packaged plugin')) + + if not cfg.package_name: + raise ValidationError(_('Plugin package name not found')) + + if user and not user.is_staff: + raise ValidationError(_('Only staff users can administer plugins')) + + +def uninstall_plugin(cfg: plugin.models.PluginConfig, user=None, delete_config=True): + """Uninstall a plugin from the python virtual environment. + + - The plugin must not be active + - The plugin must be a "package" and have a valid package name + + Args: + cfg: PluginConfig object + user: User performing the uninstall + delete_config: If True, delete the plugin configuration from the database + """ + from plugin.registry import registry + + if cfg.active: + raise ValidationError( + _('Plugin cannot be uninstalled as it is currently active') + ) + + validate_package_plugin(cfg, user) + package_name = cfg.package_name + logger.info('Uninstalling plugin: %s', package_name) + + cmd = ['uninstall', '-y', package_name] + + try: + result = pip_command(*cmd) + + ret = { + 'result': _('Uninstalled plugin successfully'), + 'success': True, + 'output': str(result, 'utf-8'), + } + + except subprocess.CalledProcessError as error: + handle_pip_error(error, 'plugin_uninstall') + + # Update the plugins file + update_plugins_file(package_name, remove=True) + + if delete_config: + # Remove the plugin configuration from the database + cfg.delete() + + # Reload the plugin registry + registry.reload_plugins(full_reload=True, force_reload=True, collect=True) + + return ret diff --git a/InvenTree/plugin/machine/__init__.py b/InvenTree/plugin/machine/__init__.py new file mode 100644 index 0000000000..617df0762b --- /dev/null +++ b/InvenTree/plugin/machine/__init__.py @@ -0,0 +1,3 @@ +from machine import BaseDriver, BaseMachineType, MachineStatus, registry + +__all__ = ['registry', 'BaseDriver', 'BaseMachineType', 'MachineStatus'] diff --git a/InvenTree/plugin/machine/machine_types.py b/InvenTree/plugin/machine/machine_types.py new file mode 100644 index 0000000000..f83dea2470 --- /dev/null +++ b/InvenTree/plugin/machine/machine_types.py @@ -0,0 +1,3 @@ +"""just re-export the machine types from the plugin InvenTree app.""" + +from machine.machine_types import * # noqa: F403, F401 diff --git a/InvenTree/plugin/migrations/0008_pluginconfig_package_name.py b/InvenTree/plugin/migrations/0008_pluginconfig_package_name.py new file mode 100644 index 0000000000..b1d21e948d --- /dev/null +++ b/InvenTree/plugin/migrations/0008_pluginconfig_package_name.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.23 on 2024-02-04 11:18 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('plugin', '0007_auto_20230805_1748'), + ] + + operations = [ + migrations.AddField( + model_name='pluginconfig', + name='package_name', + field=models.CharField(blank=True, help_text='Name of the installed package, if the plugin was installed via PIP', max_length=255, null=True, verbose_name='Package Name'), + ), + ] diff --git a/InvenTree/plugin/models.py b/InvenTree/plugin/models.py index 7d17a4bcf0..b77108e2e5 100644 --- a/InvenTree/plugin/models.py +++ b/InvenTree/plugin/models.py @@ -7,6 +7,7 @@ from django.conf import settings from django.contrib import admin from django.contrib.auth.models import User from django.db import models +from django.db.utils import IntegrityError from django.utils.translation import gettext_lazy as _ import common.models @@ -41,6 +42,16 @@ class PluginConfig(InvenTree.models.MetadataMixin, models.Model): help_text=_('PluginName of the plugin'), ) + package_name = models.CharField( + null=True, + blank=True, + max_length=255, + verbose_name=_('Package Name'), + help_text=_( + 'Name of the installed package, if the plugin was installed via PIP' + ), + ) + active = models.BooleanField( default=False, verbose_name=_('Active'), help_text=_('Is the plugin active') ) @@ -122,7 +133,7 @@ class PluginConfig(InvenTree.models.MetadataMixin, models.Model): """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) + super().save(force_insert, force_update, *args, **kwargs) if self.is_builtin(): # Force active if builtin @@ -134,8 +145,6 @@ class PluginConfig(InvenTree.models.MetadataMixin, models.Model): warnings.warn('A reload was triggered', stacklevel=2) registry.reload_plugins() - return ret - @admin.display(boolean=True, description=_('Installed')) def is_installed(self) -> bool: """Simple check to determine if this plugin is installed. @@ -161,6 +170,14 @@ class PluginConfig(InvenTree.models.MetadataMixin, models.Model): return self.plugin.check_is_builtin() + @admin.display(boolean=True, description=_('Package Plugin')) + def is_package(self) -> bool: + """Return True if this is a 'package' plugin.""" + if not self.plugin: + return False + + return getattr(self.plugin, 'is_package', False) + class PluginSetting(common.models.BaseInvenTreeSetting): """This model represents settings for individual plugins.""" diff --git a/InvenTree/plugin/plugin.py b/InvenTree/plugin/plugin.py index 489e114961..339a2d4f01 100644 --- a/InvenTree/plugin/plugin.py +++ b/InvenTree/plugin/plugin.py @@ -9,7 +9,6 @@ from importlib.metadata import PackageNotFoundError, metadata from pathlib import Path from django.conf import settings -from django.db.utils import OperationalError, ProgrammingError from django.urls.base import reverse from django.utils.text import slugify from django.utils.translation import gettext_lazy as _ @@ -96,24 +95,9 @@ class MetaBase: def plugin_config(self): """Return the PluginConfig object associated with this plugin.""" - import InvenTree.ready + from plugin.registry import registry - # Database contains no information yet - return None - if InvenTree.ready.isImportingData(): - return None - - try: - import plugin.models - - cfg, _ = plugin.models.PluginConfig.objects.get_or_create( - key=self.plugin_slug(), name=self.plugin_name() - ) - except (OperationalError, ProgrammingError): - cfg = None - except plugin.models.PluginConfig.DoesNotExist: - cfg = None - - return cfg + return registry.get_plugin_config(self.plugin_slug()) def is_active(self): """Return True if this plugin is currently active.""" @@ -353,6 +337,30 @@ class InvenTreePlugin(VersionMixin, MixinBase, MetaBase): """Path to the plugin.""" return self.check_package_path() + @classmethod + def check_package_install_name(cls) -> [str, None]: + """Installable package name of the plugin. + + e.g. if this plugin was installed via 'pip install ', + then this function should return '' + + Returns: + str: Install name of the package, else None + """ + return getattr(cls, 'package_name', None) + + @property + def package_install_name(self) -> [str, None]: + """Installable package name of the plugin. + + e.g. if this plugin was installed via 'pip install ', + then this function should return '' + + Returns: + str: Install name of the package, else None + """ + return self.check_package_install_name() + @property def settings_url(self): """URL to the settings panel for this plugin.""" diff --git a/InvenTree/plugin/registry.py b/InvenTree/plugin/registry.py index 999b7b1394..b51a797b96 100644 --- a/InvenTree/plugin/registry.py +++ b/InvenTree/plugin/registry.py @@ -9,9 +9,10 @@ import importlib import logging import os import time +from collections import OrderedDict from pathlib import Path from threading import Lock -from typing import Any, Dict, List, OrderedDict +from typing import Any from django.apps import apps from django.conf import settings @@ -21,12 +22,6 @@ from django.urls import clear_url_caches, path from django.utils.text import slugify from django.utils.translation import gettext_lazy as _ -from maintenance_mode.core import ( - get_maintenance_mode, - maintenance_mode_on, - set_maintenance_mode, -) - from InvenTree.config import get_plugin_dir from InvenTree.ready import canAppAccessDatabase @@ -58,19 +53,19 @@ class PluginsRegistry: Set up all needed references for internal and external states. """ # plugin registry - self.plugins: Dict[str, InvenTreePlugin] = {} # List of active instances - self.plugins_inactive: Dict[ + self.plugins: dict[str, InvenTreePlugin] = {} # List of active instances + self.plugins_inactive: dict[ str, InvenTreePlugin ] = {} # List of inactive instances - self.plugins_full: Dict[ + self.plugins_full: dict[ str, InvenTreePlugin ] = {} # List of all plugin instances # Keep an internal hash of the plugin registry state self.registry_hash = None - self.plugin_modules: List[InvenTreePlugin] = [] # Holds all discovered plugins - self.mixin_modules: Dict[str, Any] = {} # Holds all discovered mixins + self.plugin_modules: list[InvenTreePlugin] = [] # Holds all discovered plugins + self.mixin_modules: dict[str, Any] = {} # Holds all discovered mixins self.errors = {} # Holds discovering errors @@ -89,7 +84,7 @@ class PluginsRegistry: """Return True if the plugin registry is currently loading.""" return self.loading_lock.locked() - def get_plugin(self, slug): + def get_plugin(self, slug, active=None): """Lookup plugin by slug (unique key).""" # Check if the registry needs to be reloaded self.check_reload() @@ -98,7 +93,43 @@ class PluginsRegistry: logger.warning("Plugin registry has no record of plugin '%s'", slug) return None - return self.plugins[slug] + plg = self.plugins[slug] + + if active is not None: + if active != plg.is_active(): + return None + + return plg + + def get_plugin_config(self, slug: str, name: [str, None] = None): + """Return the matching PluginConfig instance for a given plugin. + + Args: + slug: The plugin slug + name: The plugin name (optional) + """ + import InvenTree.ready + from plugin.models import PluginConfig + + if InvenTree.ready.isImportingData(): + return None + + try: + cfg, _created = PluginConfig.objects.get_or_create(key=slug) + except PluginConfig.DoesNotExist: + return None + except (IntegrityError, OperationalError, ProgrammingError): # pragma: no cover + return None + + if name and cfg.name != name: + # Update the name if it has changed + try: + cfg.name = name + cfg.save() + except Exception as e: + logger.exception('Failed to update plugin name') + + return cfg def set_plugin_state(self, slug, state): """Set the state(active/inactive) of a plugin. @@ -114,9 +145,12 @@ class PluginsRegistry: logger.warning("Plugin registry has no record of plugin '%s'", slug) return - plugin = self.plugins_full[slug].db - plugin.active = state - plugin.save() + cfg = self.get_plugin_config(slug) + cfg.active = state + cfg.save() + + # Update the registry hash value + self.update_plugin_hash() def call_plugin_function(self, slug, func, *args, **kwargs): """Call a member function (named by 'func') of the plugin named by 'slug'. @@ -139,8 +173,14 @@ class PluginsRegistry: return plugin_func(*args, **kwargs) # region registry functions - def with_mixin(self, mixin: str, active=None, builtin=None): - """Returns reference to all plugins that have a specified mixin enabled.""" + def with_mixin(self, mixin: str, active=True, builtin=None): + """Returns reference to all plugins that have a specified mixin enabled. + + Args: + mixin (str): Mixin name + active (bool, optional): Filter by 'active' status of plugin. Defaults to True. + builtin (bool, optional): Filter by 'builtin' status of plugin. Defaults to None. + """ # Check if the registry needs to be loaded self.check_reload() @@ -173,11 +213,6 @@ class PluginsRegistry: """ logger.info('Loading plugins') - # Set maintenance mode - _maintenance = bool(get_maintenance_mode()) - if not _maintenance: - set_maintenance_mode(True) - registered_successful = False blocked_plugin = None retry_counter = settings.PLUGIN_RETRY @@ -227,10 +262,6 @@ class PluginsRegistry: # ensure plugins_loaded is True self.plugins_loaded = True - # Remove maintenance mode - if not _maintenance: - set_maintenance_mode(False) - logger.debug('Finished loading plugins') # Trigger plugins_loaded event @@ -247,21 +278,12 @@ class PluginsRegistry: """ logger.info('Start unloading plugins') - # Set maintenance mode - _maintenance = bool(get_maintenance_mode()) - if not _maintenance: - set_maintenance_mode(True) # pragma: no cover - # remove all plugins from registry self._clean_registry() # deactivate all integrations self._deactivate_plugins(force_reload=force_reload) - # remove maintenance - if not _maintenance: - set_maintenance_mode(False) # pragma: no cover - logger.info('Finished unloading plugins') def reload_plugins( @@ -292,15 +314,14 @@ class PluginsRegistry: collect, ) - with maintenance_mode_on(): - if collect: - logger.info('Collecting plugins') - self.plugin_modules = self.collect_plugins() + if collect: + logger.info('Collecting plugins') + self.plugin_modules = self.collect_plugins() - self.plugins_loaded = False - self._unload_plugins(force_reload=force_reload) - self.plugins_loaded = True - self._load_plugins(full_reload=full_reload) + self.plugins_loaded = False + self._unload_plugins(force_reload=force_reload) + self.plugins_loaded = True + self._load_plugins(full_reload=full_reload) self.update_plugin_hash() @@ -394,8 +415,8 @@ class PluginsRegistry: raw_module = importlib.import_module(plugin) modules = get_plugins(raw_module, InvenTreePlugin, path=parent_path) - if modules: - [collected_plugins.append(item) for item in modules] + for item in modules or []: + collected_plugins.append(item) # From this point any plugins are considered "external" and only loaded if plugins are explicitly enabled if settings.PLUGINS_ENABLED: @@ -408,6 +429,7 @@ class PluginsRegistry: try: plugin = entry.load() plugin.is_package = True + plugin.package_name = getattr(entry.dist, 'name', None) plugin._get_package_metadata() collected_plugins.append(plugin) except Exception as error: # pragma: no cover @@ -488,9 +510,7 @@ class PluginsRegistry: plg_db = plugin_configs[plg_key] else: # Configuration needs to be created - plg_db, _created = PluginConfig.objects.get_or_create( - key=plg_key, name=plg_name - ) + plg_db = self.get_plugin_config(plg_key, plg_name) except (OperationalError, ProgrammingError) as error: # Exception if the database has not been migrated yet - check if test are running - raise if not if not settings.PLUGIN_TESTING: @@ -506,11 +526,22 @@ class PluginsRegistry: # Check if this is a 'builtin' plugin builtin = plg.check_is_builtin() + package_name = None + + # Extract plugin package name + if getattr(plg, 'is_package', False): + package_name = getattr(plg, 'package_name', None) + # Auto-enable builtin plugins if builtin and plg_db and not plg_db.active: plg_db.active = True plg_db.save() + # Save the package_name attribute to the plugin + if plg_db.package_name != package_name: + plg_db.package_name = package_name + plg_db.save() + # Determine if this plugin should be loaded: # - If PLUGIN_TESTING is enabled # - If this is a 'builtin' plugin @@ -537,6 +568,7 @@ class PluginsRegistry: # Safe extra attributes plg_i.is_package = getattr(plg_i, 'is_package', False) + plg_i.pk = plg_db.pk if plg_db else None plg_i.db = plg_db @@ -651,9 +683,9 @@ class PluginsRegistry: def _clean_registry(self): """Remove all plugins from registry.""" - self.plugins: Dict[str, InvenTreePlugin] = {} - self.plugins_inactive: Dict[str, InvenTreePlugin] = {} - self.plugins_full: Dict[str, InvenTreePlugin] = {} + self.plugins: dict[str, InvenTreePlugin] = {} + self.plugins_inactive: dict[str, InvenTreePlugin] = {} + self.plugins_full: dict[str, InvenTreePlugin] = {} def _update_urls(self): """Due to the order in which plugins are loaded, the patterns in urls.py may be out of date. @@ -729,6 +761,7 @@ class PluginsRegistry: # Hash for all loaded plugins for slug, plug in self.plugins.items(): data.update(str(slug).encode()) + data.update(str(plug.name).encode()) data.update(str(plug.version).encode()) data.update(str(plug.is_active()).encode()) diff --git a/InvenTree/plugin/samples/integration/custom_panel_sample.py b/InvenTree/plugin/samples/integration/custom_panel_sample.py index 9f6ccabb8c..a38334ff84 100644 --- a/InvenTree/plugin/samples/integration/custom_panel_sample.py +++ b/InvenTree/plugin/samples/integration/custom_panel_sample.py @@ -9,9 +9,9 @@ from stock.views import StockLocationDetail class CustomPanelSample(PanelMixin, SettingsMixin, InvenTreePlugin): """A sample plugin which renders some custom panels.""" - NAME = 'CustomPanelExample' + NAME = 'SamplePanel' SLUG = 'samplepanel' - TITLE = 'Custom Panel Example' + TITLE = 'Sample Panel Example' DESCRIPTION = 'An example plugin demonstrating how custom panels can be added to the user interface' VERSION = '0.1' diff --git a/InvenTree/plugin/samples/integration/simpleactionplugin.py b/InvenTree/plugin/samples/integration/simpleactionplugin.py index bf892ba577..550c035f56 100644 --- a/InvenTree/plugin/samples/integration/simpleactionplugin.py +++ b/InvenTree/plugin/samples/integration/simpleactionplugin.py @@ -8,6 +8,7 @@ class SimpleActionPlugin(ActionMixin, InvenTreePlugin): """An EXTREMELY simple action plugin which demonstrates the capability of the ActionMixin class.""" NAME = 'SimpleActionPlugin' + SLUG = 'simpleaction' ACTION_NAME = 'simple' def perform_action(self, user=None, data=None): diff --git a/InvenTree/plugin/samples/integration/test_simpleactionplugin.py b/InvenTree/plugin/samples/integration/test_simpleactionplugin.py index d1542c4c2d..57ee67bd4d 100644 --- a/InvenTree/plugin/samples/integration/test_simpleactionplugin.py +++ b/InvenTree/plugin/samples/integration/test_simpleactionplugin.py @@ -1,29 +1,40 @@ """Unit tests for action plugins.""" from InvenTree.unit_test import InvenTreeTestCase +from plugin.registry import registry from plugin.samples.integration.simpleactionplugin import SimpleActionPlugin class SimpleActionPluginTests(InvenTreeTestCase): """Tests for SampleIntegrationPlugin.""" - def setUp(self): - """Setup for tests.""" - super().setUp() - - self.plugin = SimpleActionPlugin() - def test_name(self): """Check plugn names.""" - self.assertEqual(self.plugin.plugin_name(), 'SimpleActionPlugin') - self.assertEqual(self.plugin.action_name(), 'simple') + plg = SimpleActionPlugin() + self.assertEqual(plg.plugin_name(), 'SimpleActionPlugin') + self.assertEqual(plg.action_name(), 'simple') + + def set_plugin_state(self, state: bool): + """Set the enabled state of the SimpleActionPlugin.""" + cfg = registry.get_plugin_config('simpleaction') + cfg.active = state + cfg.save() def test_function(self): """Check if functions work.""" + data = {'action': 'simple', 'data': {'foo': 'bar'}} + + self.set_plugin_state(False) + + response = self.client.post('/api/action/', data=data) + self.assertEqual(response.status_code, 200) + self.assertIn('error', response.data) + + # Now enable the plugin + self.set_plugin_state(True) + # test functions - response = self.client.post( - '/api/action/', data={'action': 'simple', 'data': {'foo': 'bar'}} - ) + response = self.client.post('/api/action/', data=data) self.assertEqual(response.status_code, 200) self.assertJSONEqual( str(response.content, encoding='utf8'), diff --git a/InvenTree/plugin/samples/integration/test_validation_sample.py b/InvenTree/plugin/samples/integration/test_validation_sample.py new file mode 100644 index 0000000000..6acff5cac9 --- /dev/null +++ b/InvenTree/plugin/samples/integration/test_validation_sample.py @@ -0,0 +1,115 @@ +"""Unit tests for the SampleValidatorPlugin class.""" + +from django.core.exceptions import ValidationError + +import part.models +from InvenTree.unit_test import InvenTreeTestCase +from plugin.registry import registry + + +class SampleValidatorPluginTest(InvenTreeTestCase): + """Tests for the SampleValidatonPlugin class.""" + + fixtures = ['category', 'location'] + + def setUp(self): + """Set up the test environment.""" + cat = part.models.PartCategory.objects.first() + self.part = part.models.Part.objects.create( + name='TestPart', category=cat, description='A test part', component=True + ) + self.assembly = part.models.Part.objects.create( + name='TestAssembly', + category=cat, + description='A test assembly', + component=False, + assembly=True, + ) + self.bom_item = part.models.BomItem.objects.create( + part=self.assembly, sub_part=self.part, quantity=1 + ) + + def get_plugin(self): + """Return the SampleValidatorPlugin instance.""" + return registry.get_plugin('validator', active=True) + + def enable_plugin(self, en: bool): + """Enable or disable the SampleValidatorPlugin.""" + registry.set_plugin_state('validator', en) + + def test_validate_model_instance(self): + """Test the validate_model_instance function.""" + # First, ensure that the plugin is disabled + self.enable_plugin(False) + + plg = self.get_plugin() + self.assertIsNone(plg) + + # Set the BomItem quantity to a non-integer value + # This should pass, as the plugin is currently disabled + self.bom_item.quantity = 3.14159 + self.bom_item.save() + + # Next, check that we can make a part instance description shorter + prt = part.models.Part.objects.first() + prt.description = prt.description[:-1] + prt.save() + + # Now, enable the plugin + self.enable_plugin(True) + + plg = self.get_plugin() + self.assertIsNotNone(plg) + + plg.set_setting('BOM_ITEM_INTEGER', True) + + self.bom_item.quantity = 3.14159 + with self.assertRaises(ValidationError): + self.bom_item.save() + + # Now, disable the plugin setting + plg.set_setting('BOM_ITEM_INTEGER', False) + + self.bom_item.quantity = 3.14159 + self.bom_item.save() + + # Test that we *cannot* set a part description to a shorter value + prt.description = prt.description[:-1] + with self.assertRaises(ValidationError): + prt.save() + + self.enable_plugin(False) + + def test_validate_part_name(self): + """Test the validate_part_name function.""" + self.enable_plugin(True) + plg = self.get_plugin() + self.assertIsNotNone(plg) + + # Set the part description short + self.part.description = 'x' + + with self.assertRaises(ValidationError): + self.part.save() + + self.enable_plugin(False) + self.part.save() + + def test_validate_ipn(self): + """Test the validate_ipn function.""" + self.enable_plugin(True) + plg = self.get_plugin() + self.assertIsNotNone(plg) + + self.part.IPN = 'LMNOP' + plg.set_setting('IPN_MUST_CONTAIN_Q', False) + self.part.save() + + plg.set_setting('IPN_MUST_CONTAIN_Q', True) + + with self.assertRaises(ValidationError): + self.part.save() + + self.part.IPN = 'LMNOPQ' + + self.part.save() diff --git a/InvenTree/plugin/samples/integration/validation_sample.py b/InvenTree/plugin/samples/integration/validation_sample.py index 52d8da1733..0f03f464bd 100644 --- a/InvenTree/plugin/samples/integration/validation_sample.py +++ b/InvenTree/plugin/samples/integration/validation_sample.py @@ -2,21 +2,19 @@ from datetime import datetime -from django.core.exceptions import ValidationError - from plugin import InvenTreePlugin from plugin.mixins import SettingsMixin, ValidationMixin -class CustomValidationMixin(SettingsMixin, ValidationMixin, InvenTreePlugin): +class SampleValidatorPlugin(SettingsMixin, ValidationMixin, InvenTreePlugin): """A sample plugin class for demonstrating custom validation functions. Simple of examples of custom validator code. """ - NAME = 'CustomValidator' + NAME = 'SampleValidator' SLUG = 'validator' - TITLE = 'Custom Validator Plugin' + TITLE = 'Sample Validator Plugin' DESCRIPTION = 'A sample plugin for demonstrating custom validation functionality' VERSION = '0.3.0' @@ -49,8 +47,44 @@ class CustomValidationMixin(SettingsMixin, ValidationMixin, InvenTreePlugin): 'description': 'Required prefix for batch code', 'default': 'B', }, + 'BOM_ITEM_INTEGER': { + 'name': 'Integer Bom Quantity', + 'description': 'Bom item quantity must be an integer', + 'default': False, + 'validator': bool, + }, } + def validate_model_instance(self, instance, deltas=None): + """Run validation against any saved model. + + - Check if the instance is a BomItem object + - Test if the quantity is an integer + """ + import part.models + + # Print debug message to console (intentional) + print('Validating model instance:', instance.__class__, f'<{instance.pk}>') + + if isinstance(instance, part.models.BomItem): + if self.get_setting('BOM_ITEM_INTEGER'): + if float(instance.quantity) != int(instance.quantity): + self.raise_error({ + 'quantity': 'Bom item quantity must be an integer' + }) + + if isinstance(instance, part.models.Part): + # If the part description is being updated, prevent it from being reduced in length + + if deltas and 'description' in deltas: + old_desc = deltas['description']['old'] + new_desc = deltas['description']['new'] + + if len(new_desc) < len(old_desc): + self.raise_error({ + 'description': 'Part description cannot be shortened' + }) + def validate_part_name(self, name: str, part): """Custom validation for Part name field. @@ -61,13 +95,13 @@ class CustomValidationMixin(SettingsMixin, ValidationMixin, InvenTreePlugin): These examples are silly, but serve to demonstrate how the feature could be used. """ if len(part.description) < len(name): - raise ValidationError('Part description cannot be shorter than the name') + self.raise_error('Part description cannot be shorter than the name') illegal_chars = self.get_setting('ILLEGAL_PART_CHARS') for c in illegal_chars: if c in name: - raise ValidationError(f"Illegal character in part name: '{c}'") + self.raise_error(f"Illegal character in part name: '{c}'") def validate_part_ipn(self, ipn: str, part): """Validate part IPN. @@ -75,7 +109,7 @@ class CustomValidationMixin(SettingsMixin, ValidationMixin, InvenTreePlugin): These examples are silly, but serve to demonstrate how the feature could be used """ if self.get_setting('IPN_MUST_CONTAIN_Q') and 'Q' not in ipn: - raise ValidationError("IPN must contain 'Q'") + self.raise_error("IPN must contain 'Q'") def validate_part_parameter(self, parameter, data): """Validate part parameter data. @@ -85,7 +119,7 @@ class CustomValidationMixin(SettingsMixin, ValidationMixin, InvenTreePlugin): if parameter.template.name.lower() in ['length', 'width']: d = int(data) if d >= 100: - raise ValidationError('Value must be less than 100') + self.raise_error('Value must be less than 100') def validate_serial_number(self, serial: str, part): """Validate serial number for a given StockItem. @@ -94,14 +128,12 @@ class CustomValidationMixin(SettingsMixin, ValidationMixin, InvenTreePlugin): """ if self.get_setting('SERIAL_MUST_BE_PALINDROME'): if serial != serial[::-1]: - raise ValidationError('Serial must be a palindrome') + self.raise_error('Serial must be a palindrome') if self.get_setting('SERIAL_MUST_MATCH_PART'): # Serial must start with the same letter as the linked part, for some reason if serial[0] != part.name[0]: - raise ValidationError( - 'Serial number must start with same letter as part' - ) + self.raise_error('Serial number must start with same letter as part') def validate_batch_code(self, batch_code: str, item): """Ensure that a particular batch code meets specification. @@ -112,7 +144,7 @@ class CustomValidationMixin(SettingsMixin, ValidationMixin, InvenTreePlugin): if len(batch_code) > 0: if prefix and not batch_code.startswith(prefix): - raise ValidationError(f"Batch code must start with '{prefix}'") + self.raise_error(f"Batch code must start with '{prefix}'") def generate_batch_code(self): """Generate a new batch code.""" diff --git a/InvenTree/plugin/serializers.py b/InvenTree/plugin/serializers.py index f1a8b6065b..507ba20799 100644 --- a/InvenTree/plugin/serializers.py +++ b/InvenTree/plugin/serializers.py @@ -51,12 +51,14 @@ class PluginConfigSerializer(serializers.ModelSerializer): 'pk', 'key', 'name', + 'package_name', 'active', 'meta', 'mixins', 'is_builtin', 'is_sample', 'is_installed', + 'is_package', ] read_only_fields = ['key', 'is_builtin', 'is_sample', 'is_installed'] @@ -81,6 +83,7 @@ class PluginConfigInstallSerializer(serializers.Serializer): 'Source for the package - this can be a custom registry or a VCS path' ), ) + packagename = serializers.CharField( required=False, allow_blank=True, @@ -89,6 +92,16 @@ class PluginConfigInstallSerializer(serializers.Serializer): 'Name for the Plugin Package - can also contain a version indicator' ), ) + + version = serializers.CharField( + required=False, + allow_blank=True, + label=_('Version'), + help_text=_( + 'Version specifier for the plugin. Leave blank for latest version.' + ), + ) + confirm = serializers.BooleanField( label=_('Confirm plugin installation'), help_text=_( @@ -120,8 +133,12 @@ class PluginConfigInstallSerializer(serializers.Serializer): packagename = data.get('packagename', '') url = data.get('url', '') + version = data.get('version', None) + user = self.context['request'].user - return install_plugin(url=url, packagename=packagename) + return install_plugin( + url=url, packagename=packagename, version=version, user=user + ) class PluginConfigEmptySerializer(serializers.Serializer): @@ -193,6 +210,27 @@ class PluginActivateSerializer(serializers.Serializer): return instance +class PluginUninstallSerializer(serializers.Serializer): + """Serializer for uninstalling a plugin.""" + + delete_config = serializers.BooleanField( + required=False, + default=True, + label=_('Delete configuration'), + help_text=_('Delete the plugin configuration from the database'), + ) + + def update(self, instance, validated_data): + """Uninstall the specified plugin.""" + from plugin.installer import uninstall_plugin + + return uninstall_plugin( + instance, + user=self.context['request'].user, + delete_config=validated_data.get('delete_config', True), + ) + + class PluginSettingSerializer(GenericReferencedSettingSerializer): """Serializer for the PluginSetting model.""" @@ -209,6 +247,7 @@ class NotificationUserSettingSerializer(GenericReferencedSettingSerializer): EXTRA_FIELDS = ['method'] method = serializers.CharField(read_only=True) + typ = serializers.CharField(read_only=True) class PluginRegistryErrorSerializer(serializers.Serializer): diff --git a/InvenTree/plugin/test_plugin.py b/InvenTree/plugin/test_plugin.py index cd76ce0704..557a86b75a 100644 --- a/InvenTree/plugin/test_plugin.py +++ b/InvenTree/plugin/test_plugin.py @@ -106,7 +106,6 @@ class InvenTreePluginTests(TestCase): LICENSE = 'MIT' cls.plugin_name = NameInvenTreePlugin() - cls.plugin_sample = SampleIntegrationPlugin() class VersionInvenTreePlugin(InvenTreePlugin): NAME = 'Version' @@ -140,7 +139,7 @@ class InvenTreePluginTests(TestCase): # is_sample self.assertEqual(self.plugin.is_sample, False) - self.assertEqual(self.plugin_sample.is_sample, True) + self.assertEqual(SampleIntegrationPlugin().is_sample, True) # slug self.assertEqual(self.plugin.slug, '') diff --git a/InvenTree/plugin/urls.py b/InvenTree/plugin/urls.py index dc25226171..a551d9d9e5 100644 --- a/InvenTree/plugin/urls.py +++ b/InvenTree/plugin/urls.py @@ -1,5 +1,6 @@ """URL lookup for plugin app.""" +from django.conf import settings from django.urls import include, re_path PLUGIN_BASE = 'plugin' # Constant for links @@ -13,8 +14,11 @@ def get_plugin_urls(): urls = [] # Only allow custom routing if the setting is enabled - if InvenTreeSetting.get_setting( - 'ENABLE_PLUGINS_URL', False, create=False, cache=False + if ( + InvenTreeSetting.get_setting( + 'ENABLE_PLUGINS_URL', False, create=False, cache=False + ) + or settings.PLUGIN_TESTING_SETUP ): for plugin in registry.plugins.values(): if plugin.mixin_enabled('urls'): diff --git a/InvenTree/plugin/views.py b/InvenTree/plugin/views.py index a332046f3e..85ba380a8d 100644 --- a/InvenTree/plugin/views.py +++ b/InvenTree/plugin/views.py @@ -39,6 +39,6 @@ class InvenTreePluginViewMixin: ctx = super().get_context_data(**kwargs) if settings.PLUGINS_ENABLED: - ctx['plugin_panels'] = self.get_plugin_panels(ctx) + ctx['plugin_panels'] = self.get_plugin_panels(ctx.copy()) return ctx diff --git a/InvenTree/report/admin.py b/InvenTree/report/admin.py index 38edbb29c5..6a715f9134 100644 --- a/InvenTree/report/admin.py +++ b/InvenTree/report/admin.py @@ -15,31 +15,30 @@ from .models import ( ) +@admin.register( + BillOfMaterialsReport, + BuildReport, + PurchaseOrderReport, + ReturnOrderReport, + SalesOrderReport, + StockLocationReport, + TestReport, +) class ReportTemplateAdmin(admin.ModelAdmin): """Admin class for the various reporting models.""" list_display = ('name', 'description', 'template', 'filters', 'enabled', 'revision') +@admin.register(ReportSnippet) class ReportSnippetAdmin(admin.ModelAdmin): """Admin class for the ReportSnippet model.""" list_display = ('id', 'snippet', 'description') +@admin.register(ReportAsset) class ReportAssetAdmin(admin.ModelAdmin): """Admin class for the ReportAsset model.""" list_display = ('id', 'asset', 'description') - - -admin.site.register(ReportSnippet, ReportSnippetAdmin) -admin.site.register(ReportAsset, ReportAssetAdmin) - -admin.site.register(StockLocationReport, ReportTemplateAdmin) -admin.site.register(TestReport, ReportTemplateAdmin) -admin.site.register(BuildReport, ReportTemplateAdmin) -admin.site.register(BillOfMaterialsReport, ReportTemplateAdmin) -admin.site.register(PurchaseOrderReport, ReportTemplateAdmin) -admin.site.register(ReturnOrderReport, ReportTemplateAdmin) -admin.site.register(SalesOrderReport, ReportTemplateAdmin) diff --git a/InvenTree/report/apps.py b/InvenTree/report/apps.py index f5b71ace0a..634f9c10aa 100644 --- a/InvenTree/report/apps.py +++ b/InvenTree/report/apps.py @@ -11,6 +11,8 @@ from django.conf import settings from django.core.exceptions import AppRegistryNotReady from django.db.utils import IntegrityError, OperationalError, ProgrammingError +from maintenance_mode.core import maintenance_mode_on, set_maintenance_mode + import InvenTree.helpers logger = logging.getLogger('inventree') @@ -32,36 +34,36 @@ class ReportConfig(AppConfig): ): return - if InvenTree.ready.isRunningMigrations(): - return + if not InvenTree.ready.canAppAccessDatabase(allow_test=False): + return # pragma: no cover # Configure logging for PDF generation (disable "info" messages) logging.getLogger('fontTools').setLevel(logging.WARNING) logging.getLogger('weasyprint').setLevel(logging.WARNING) - # Create entries for default report templates - if ( - InvenTree.ready.canAppAccessDatabase(allow_test=False) - and not InvenTree.ready.isImportingData() + with maintenance_mode_on(): + self.create_reports() + + set_maintenance_mode(False) + + def create_reports(self): + """Create default report templates.""" + try: + self.create_default_test_reports() + self.create_default_build_reports() + self.create_default_bill_of_materials_reports() + self.create_default_purchase_order_reports() + self.create_default_sales_order_reports() + self.create_default_return_order_reports() + self.create_default_stock_location_reports() + except ( + AppRegistryNotReady, + IntegrityError, + OperationalError, + ProgrammingError, ): - try: - self.create_default_test_reports() - self.create_default_build_reports() - self.create_default_bill_of_materials_reports() - self.create_default_purchase_order_reports() - self.create_default_sales_order_reports() - self.create_default_return_order_reports() - self.create_default_stock_location_reports() - except ( - AppRegistryNotReady, - IntegrityError, - OperationalError, - ProgrammingError, - ): - # Database might not yet be ready - warnings.warn( - 'Database was not ready for creating reports', stacklevel=2 - ) + # Database might not yet be ready + warnings.warn('Database was not ready for creating reports', stacklevel=2) def create_default_reports(self, model, reports): """Copy default report files across to the media directory.""" diff --git a/InvenTree/report/models.py b/InvenTree/report/models.py index 254c53113c..269b38ee6c 100644 --- a/InvenTree/report/models.py +++ b/InvenTree/report/models.py @@ -16,6 +16,8 @@ from django.utils.translation import gettext_lazy as _ import build.models import common.models +import InvenTree.exceptions +import InvenTree.models import order.models import part.models import report.helpers @@ -93,7 +95,7 @@ class WeasyprintReportMixin(WeasyTemplateResponseMixin): self.pdf_filename = kwargs.get('filename', 'report.pdf') -class ReportBase(models.Model): +class ReportBase(InvenTree.models.InvenTreeModel): """Base class for uploading html templates.""" class Meta: @@ -262,7 +264,12 @@ class ReportTemplateBase(MetadataMixin, ReportBase): for plugin in plugins: # Let each plugin add its own context data - plugin.add_report_context(self, self.object_to_print, request, context) + try: + plugin.add_report_context(self, self.object_to_print, request, context) + except Exception: + InvenTree.exceptions.log_error( + f'plugins.{plugin.slug}.add_report_context' + ) return context diff --git a/InvenTree/report/templatetags/report.py b/InvenTree/report/templatetags/report.py index fff516d57c..e66cc326a9 100644 --- a/InvenTree/report/templatetags/report.py +++ b/InvenTree/report/templatetags/report.py @@ -3,6 +3,7 @@ import base64 import logging import os +from decimal import Decimal from django import template from django.conf import settings @@ -86,7 +87,7 @@ def asset(filename): filename = '' + filename # If in debug mode, return URL to the image, not a local file - debug_mode = InvenTreeSetting.get_setting('REPORT_DEBUG_MODE') + debug_mode = InvenTreeSetting.get_setting('REPORT_DEBUG_MODE', cache=False) # Test if the file actually exists full_path = settings.MEDIA_ROOT.joinpath('report', 'assets', filename).resolve() @@ -131,7 +132,7 @@ def uploaded_image( filename = '' + filename # If in debug mode, return URL to the image, not a local file - debug_mode = InvenTreeSetting.get_setting('REPORT_DEBUG_MODE') + debug_mode = InvenTreeSetting.get_setting('REPORT_DEBUG_MODE', cache=False) # Check if the file exists if not filename: @@ -299,7 +300,7 @@ def logo_image(**kwargs): - Otherwise, return a path to the default InvenTree logo """ # If in debug mode, return URL to the image, not a local file - debug_mode = InvenTreeSetting.get_setting('REPORT_DEBUG_MODE') + debug_mode = InvenTreeSetting.get_setting('REPORT_DEBUG_MODE', cache=False) return InvenTree.helpers.getLogoImage(as_file=not debug_mode, **kwargs) @@ -376,3 +377,48 @@ def render_html_text(text: str, **kwargs): output += ''.join([f'' for tag in tags]) return mark_safe(output) + + +@register.simple_tag +def format_number(number, **kwargs): + """Render a number with optional formatting options. + + kwargs: + decimal_places: Number of decimal places to render + integer: Boolean, whether to render the number as an integer + leading: Number of leading zeros + """ + try: + number = Decimal(str(number)) + except Exception: + # If the number cannot be converted to a Decimal, just return the original value + return str(number) + + if kwargs.get('integer', False): + # Convert to integer + number = Decimal(int(number)) + + # Normalize the number (remove trailing zeroes) + number = number.normalize() + + decimals = kwargs.get('decimal_places', None) + + if decimals is not None: + try: + decimals = int(decimals) + number = round(number, decimals) + except ValueError: + pass + + value = str(number) + + leading = kwargs.get('leading', None) + + if leading is not None: + try: + leading = int(leading) + value = '0' * leading + value + except ValueError: + pass + + return value diff --git a/InvenTree/report/tests.py b/InvenTree/report/tests.py index 8f43aca98d..ab9b68f83c 100644 --- a/InvenTree/report/tests.py +++ b/InvenTree/report/tests.py @@ -194,6 +194,7 @@ class ReportTest(InvenTreeAPITestCase): 'part', 'company', 'location', + 'test_templates', 'supplier_part', 'stock', 'stock_tests', diff --git a/InvenTree/stock/admin.py b/InvenTree/stock/admin.py index e1214ffebf..f97c281f52 100644 --- a/InvenTree/stock/admin.py +++ b/InvenTree/stock/admin.py @@ -85,6 +85,7 @@ class LocationInline(admin.TabularInline): model = StockLocation +@admin.register(StockLocation) class LocationAdmin(ImportExportModelAdmin): """Admin class for Location.""" @@ -99,6 +100,7 @@ class LocationAdmin(ImportExportModelAdmin): autocomplete_fields = ['parent'] +@admin.register(StockLocationType) class LocationTypeAdmin(admin.ModelAdmin): """Admin class for StockLocationType.""" @@ -268,6 +270,7 @@ class StockItemResource(InvenTreeResource): StockItem.objects.rebuild() +@admin.register(StockItem) class StockItemAdmin(ImportExportModelAdmin): """Admin class for StockItem.""" @@ -292,6 +295,7 @@ class StockItemAdmin(ImportExportModelAdmin): ] +@admin.register(StockItemAttachment) class StockAttachmentAdmin(admin.ModelAdmin): """Admin class for StockAttachment.""" @@ -300,6 +304,7 @@ class StockAttachmentAdmin(admin.ModelAdmin): autocomplete_fields = ['stock_item'] +@admin.register(StockItemTracking) class StockTrackingAdmin(ImportExportModelAdmin): """Admin class for StockTracking.""" @@ -308,17 +313,10 @@ class StockTrackingAdmin(ImportExportModelAdmin): autocomplete_fields = ['item'] +@admin.register(StockItemTestResult) class StockItemTestResultAdmin(admin.ModelAdmin): """Admin class for StockItemTestResult.""" - list_display = ('stock_item', 'test', 'result', 'value') + list_display = ('stock_item', 'test_name', 'result', 'value') autocomplete_fields = ['stock_item'] - - -admin.site.register(StockLocation, LocationAdmin) -admin.site.register(StockLocationType, LocationTypeAdmin) -admin.site.register(StockItem, StockItemAdmin) -admin.site.register(StockItemTracking, StockTrackingAdmin) -admin.site.register(StockItemAttachment, StockAttachmentAdmin) -admin.site.register(StockItemTestResult, StockItemTestResultAdmin) diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py index 1845a3dff7..c5892acacd 100644 --- a/InvenTree/stock/api.py +++ b/InvenTree/stock/api.py @@ -38,6 +38,7 @@ from InvenTree.filters import ( from InvenTree.helpers import ( DownloadFile, extract_serial_numbers, + generateTestKey, is_ajax, isNull, str2bool, @@ -123,6 +124,8 @@ class StockDetail(RetrieveUpdateDestroyAPI): class StockItemContextMixin: """Mixin class for adding StockItem object to serializer context.""" + role_required = 'stock.change' + queryset = StockItem.objects.none() def get_serializer_context(self): @@ -655,6 +658,16 @@ class StockFilter(rest_filters.FilterSet): return queryset.filter(installed_items__gt=0) return queryset.filter(installed_items=0) + has_child_items = rest_filters.BooleanFilter( + label='Has child items', method='filter_has_child_items' + ) + + def filter_has_child_items(self, queryset, name, value): + """Filter stock items by "belongs_to" field being empty.""" + if str2bool(value): + return queryset.filter(child_items__gt=0) + return queryset.filter(child_items=0) + sent_to_customer = rest_filters.BooleanFilter( label='Sent to customer', method='filter_sent_to_customer' ) @@ -1176,22 +1189,87 @@ class StockAttachmentDetail(AttachmentMixin, RetrieveUpdateDestroyAPI): serializer_class = StockSerializers.StockItemAttachmentSerializer -class StockItemTestResultDetail(RetrieveUpdateDestroyAPI): +class StockItemTestResultMixin: + """Mixin class for the StockItemTestResult API endpoints.""" + + queryset = StockItemTestResult.objects.all() + serializer_class = StockSerializers.StockItemTestResultSerializer + + def get_serializer_context(self): + """Extend serializer context.""" + ctx = super().get_serializer_context() + ctx['request'] = self.request + return ctx + + def get_serializer(self, *args, **kwargs): + """Set context before returning serializer.""" + try: + kwargs['user_detail'] = str2bool( + self.request.query_params.get('user_detail', False) + ) + kwargs['template_detail'] = str2bool( + self.request.query_params.get('template_detail', False) + ) + except Exception: + pass + + kwargs['context'] = self.get_serializer_context() + + return self.serializer_class(*args, **kwargs) + + +class StockItemTestResultDetail(StockItemTestResultMixin, RetrieveUpdateDestroyAPI): """Detail endpoint for StockItemTestResult.""" - queryset = StockItemTestResult.objects.all() - serializer_class = StockSerializers.StockItemTestResultSerializer + pass -class StockItemTestResultList(ListCreateDestroyAPIView): +class StockItemTestResultFilter(rest_filters.FilterSet): + """API filter for the StockItemTestResult list.""" + + class Meta: + """Metaclass options.""" + + model = StockItemTestResult + + # Simple filter fields + fields = ['user', 'template', 'result', 'value'] + + build = rest_filters.ModelChoiceFilter( + label='Build', queryset=Build.objects.all(), field_name='stock_item__build' + ) + + part = rest_filters.ModelChoiceFilter( + label='Part', queryset=Part.objects.all(), field_name='stock_item__part' + ) + + required = rest_filters.BooleanFilter( + label='Required', field_name='template__required' + ) + + test = rest_filters.CharFilter( + label='Test name (case insensitive)', method='filter_test_name' + ) + + def filter_test_name(self, queryset, name, value): + """Filter by test name. + + This method is provided for legacy support, + where the StockItemTestResult model had a "test" field. + Now the "test" name is stored against the PartTestTemplate model + """ + key = generateTestKey(value) + return queryset.filter(template__key=key) + + +class StockItemTestResultList(StockItemTestResultMixin, ListCreateDestroyAPIView): """API endpoint for listing (and creating) a StockItemTestResult object.""" - queryset = StockItemTestResult.objects.all() - serializer_class = StockSerializers.StockItemTestResultSerializer - + filterset_class = StockItemTestResultFilter filter_backends = SEARCH_ORDER_FILTER - filterset_fields = ['test', 'user', 'result', 'value'] + filterset_fields = ['user', 'template', 'result', 'value'] + ordering_fields = ['date', 'result'] ordering = 'date' @@ -1201,18 +1279,6 @@ class StockItemTestResultList(ListCreateDestroyAPIView): queryset = super().filter_queryset(queryset) - # Filter by 'build' - build = params.get('build', None) - - if build is not None: - try: - build = Build.objects.get(pk=build) - - queryset = queryset.filter(stock_item__build=build) - - except (ValueError, Build.DoesNotExist): - pass - # Filter by stock item item = params.get('stock_item', None) @@ -1239,19 +1305,6 @@ class StockItemTestResultList(ListCreateDestroyAPIView): return queryset - def get_serializer(self, *args, **kwargs): - """Set context before returning serializer.""" - try: - kwargs['user_detail'] = str2bool( - self.request.query_params.get('user_detail', False) - ) - except Exception: - pass - - kwargs['context'] = self.get_serializer_context() - - return self.serializer_class(*args, **kwargs) - def perform_create(self, serializer): """Create a new test result object. diff --git a/InvenTree/stock/filters.py b/InvenTree/stock/filters.py index d1292d708c..8a214c0622 100644 --- a/InvenTree/stock/filters.py +++ b/InvenTree/stock/filters.py @@ -3,6 +3,8 @@ from django.db.models import F, Func, IntegerField, OuterRef, Q, Subquery from django.db.models.functions import Coalesce +from sql_util.utils import SubqueryCount + import stock.models @@ -28,7 +30,31 @@ def annotate_location_items(filter: Q = None): Subquery( subquery.annotate( total=Func(F('pk'), function='COUNT', output_field=IntegerField()) - ).values('total') + ) + .values('total') + .order_by() + ), + 0, + output_field=IntegerField(), + ) + + +def annotate_child_items(): + """Construct a queryset annotation which returns the number of children below a certain StockItem node in a StockItem tree.""" + child_stock_query = stock.models.StockItem.objects.filter( + tree_id=OuterRef('tree_id'), + lft__gt=OuterRef('lft'), + rght__lt=OuterRef('rght'), + level__gte=OuterRef('level'), + ) + + return Coalesce( + Subquery( + child_stock_query.annotate( + count=Func(F('pk'), function='COUNT', output_field=IntegerField()) + ) + .values('count') + .order_by() ), 0, output_field=IntegerField(), diff --git a/InvenTree/stock/fixtures/stock_tests.yaml b/InvenTree/stock/fixtures/stock_tests.yaml index 4b413b1289..e3e8da21e0 100644 --- a/InvenTree/stock/fixtures/stock_tests.yaml +++ b/InvenTree/stock/fixtures/stock_tests.yaml @@ -2,7 +2,7 @@ pk: 1 fields: stock_item: 105 - test: "Firmware Version" + template: 10 value: "0xA1B2C3D4" result: True date: 2020-02-02 @@ -11,7 +11,7 @@ pk: 2 fields: stock_item: 105 - test: "Settings Checksum" + template: 9 value: "0xAABBCCDD" result: True date: 2020-02-02 @@ -20,7 +20,7 @@ pk: 3 fields: stock_item: 105 - test: "Temperature Test" + template: 8 result: False date: 2020-05-16 notes: 'Got too hot or something' @@ -29,7 +29,7 @@ pk: 4 fields: stock_item: 105 - test: "Temperature Test" + template: 8 result: True date: 2020-05-17 notes: 'Passed temperature test by making it cooler' @@ -38,7 +38,7 @@ pk: 5 fields: stock_item: 522 - test: 'applypaint' + template: 2 result: True date: 2020-05-17 @@ -46,7 +46,7 @@ pk: 6 fields: stock_item: 522 - test: 'applypaint' + template: 2 result: False date: 2020-05-18 @@ -54,7 +54,7 @@ pk: 7 fields: stock_item: 522 - test: 'Attach Legs' + template: 4 result: True date: 2020-05-17 @@ -62,15 +62,6 @@ pk: 8 fields: stock_item: 522 - test: 'Check that chair is GreEn' + template: 3 result: True - date: 2020-05-17 - -- model: stock.stockitemtestresult - pk: 12345 - fields: - stock_item: 522 - test: 'test strength of chair' - result: False - value: 100kg - date: 2020-05-17 + date: 2024-02-15 diff --git a/InvenTree/stock/migrations/0012_auto_20190908_0405.py b/InvenTree/stock/migrations/0012_auto_20190908_0405.py index 5f52e75093..699d3d4f90 100644 --- a/InvenTree/stock/migrations/0012_auto_20190908_0405.py +++ b/InvenTree/stock/migrations/0012_auto_20190908_0405.py @@ -2,13 +2,6 @@ from django.db import migrations -from stock import models - - -def update_tree(apps, schema_editor): - # Update the StockLocation MPTT model - - models.StockLocation.objects.rebuild() class Migration(migrations.Migration): @@ -19,6 +12,4 @@ class Migration(migrations.Migration): ('stock', '0011_auto_20190908_0404'), ] - operations = [ - migrations.RunPython(update_tree) - ] + operations = [] diff --git a/InvenTree/stock/migrations/0022_auto_20200217_1109.py b/InvenTree/stock/migrations/0022_auto_20200217_1109.py index f86fd51691..e42c1bcdd2 100644 --- a/InvenTree/stock/migrations/0022_auto_20200217_1109.py +++ b/InvenTree/stock/migrations/0022_auto_20200217_1109.py @@ -1,13 +1,6 @@ # Generated by Django 2.2.9 on 2020-02-17 11:09 from django.db import migrations -from stock import models - - -def update_stock_item_tree(apps, schema_editor): - # Update the StockItem MPTT model - - models.StockItem.objects.rebuild() class Migration(migrations.Migration): @@ -18,6 +11,4 @@ class Migration(migrations.Migration): ('stock', '0021_auto_20200215_2232'), ] - operations = [ - migrations.RunPython(update_stock_item_tree) - ] + operations = [] diff --git a/InvenTree/stock/migrations/0105_stockitemtestresult_template.py b/InvenTree/stock/migrations/0105_stockitemtestresult_template.py new file mode 100644 index 0000000000..79a2c11155 --- /dev/null +++ b/InvenTree/stock/migrations/0105_stockitemtestresult_template.py @@ -0,0 +1,20 @@ +# Generated by Django 4.2.9 on 2024-02-07 03:52 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0121_auto_20240207_0344'), + ('stock', '0104_alter_stockitem_purchase_price_currency'), + ] + + operations = [ + migrations.AddField( + model_name='stockitemtestresult', + name='template', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='test_results', to='part.parttesttemplate'), + ), + ] diff --git a/InvenTree/stock/migrations/0106_auto_20240207_0353.py b/InvenTree/stock/migrations/0106_auto_20240207_0353.py new file mode 100644 index 0000000000..c081c68f62 --- /dev/null +++ b/InvenTree/stock/migrations/0106_auto_20240207_0353.py @@ -0,0 +1,133 @@ +# Generated by Django 4.2.9 on 2024-02-07 03:53 + +from django.db import migrations + + +def set_template(apps, schema_editor): + """Matching existing StockItemTestResult objects to their associated template. + + - Use the 'key' value from the associated test object. + - Look at the referenced part first + - If no matches, look at parent part template(s) + - If still no matches, create a new PartTestTemplate object + """ + import time + import InvenTree.helpers + + StockItemTestResult = apps.get_model('stock', 'stockitemtestresult') + PartTestTemplate = apps.get_model('part', 'parttesttemplate') + Part = apps.get_model('part', 'part') + + # Look at any test results which do not match a template + results = StockItemTestResult.objects.filter(template=None) + + parts = results.values_list('stock_item__part', flat=True).distinct() + + n_results = results.count() + + if n_results == 0: + return + + print(f"\n{n_results} StockItemTestResult objects do not have matching templates!") + print(f"Updating test results for {len(parts)} unique parts...") + + # Keep a map of test templates + part_tree_map = {} + + t1 = time.time() + + new_templates = 0 + + # For each part with missing templates, work out what templates are missing + for pk in parts: + part = Part.objects.get(pk=pk) + tree_id = part.tree_id + # Find all results matching this part + part_results = results.filter(stock_item__part=part) + test_names = part_results.values_list('test', flat=True).distinct() + + key_map = part_tree_map.get(tree_id, None) or {} + + for name in test_names: + template = None + + key = InvenTree.helpers.generateTestKey(name) + + if template := key_map.get(key, None): + # We have a template for this key + pass + + elif template := PartTestTemplate.objects.filter(part__tree_id=part.tree_id, key=key).first(): + # We have found an existing template for this test + pass + + elif template := PartTestTemplate.objects.filter( + part__tree_id=part.tree_id, + part__lft__lte=part.lft, + part__rght__gte=part.rght, + key=key).first(): + # We have found an existing template for this test + pass + + # Create a new template, based on the available test information + else: + + # Find the parent part template + top_level_part = part + + while top_level_part.variant_of: + top_level_part = top_level_part.variant_of + + template = PartTestTemplate.objects.create( + part=top_level_part, + test_name=name, + key=key, + ) + + new_templates += 1 + + # Finally, update all matching results + part_results.filter(test=name).update(template=template) + + # Update the key map for this part tree + key_map[key] = template + + # Update the part tree map + part_tree_map[tree_id] = key_map + + t2 = time.time() + dt = t2 - t1 + + print(f"Updated {n_results} StockItemTestResult objects in {dt:.3f} seconds.") + + if new_templates > 0: + print(f"Created {new_templates} new templates!") + + # Check that there are now zero reamining results without templates + results = StockItemTestResult.objects.filter(template=None) + assert(results.count() == 0) + + +def remove_template(apps, schema_editor): + """Remove template links from existing StockItemTestResult objects.""" + + StockItemTestResult = apps.get_model('stock', 'stockitemtestresult') + results = StockItemTestResult.objects.all() + results.update(template=None) + + if results.count() > 0: + print(f"\nRemoved template links from {results.count()} StockItemTestResult objects") + + +class Migration(migrations.Migration): + + atomic = False + + dependencies = [ + ('stock', '0105_stockitemtestresult_template'), + ('part', '0121_auto_20240207_0344') + ] + + operations = [ + migrations.RunPython(set_template, reverse_code=remove_template), + ] diff --git a/InvenTree/stock/migrations/0107_remove_stockitemtestresult_test_and_more.py b/InvenTree/stock/migrations/0107_remove_stockitemtestresult_test_and_more.py new file mode 100644 index 0000000000..7003f08870 --- /dev/null +++ b/InvenTree/stock/migrations/0107_remove_stockitemtestresult_test_and_more.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.9 on 2024-02-07 09:01 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0121_auto_20240207_0344'), + ('stock', '0106_auto_20240207_0353'), + ] + + operations = [ + migrations.RemoveField( + model_name='stockitemtestresult', + name='test', + ), + migrations.AlterField( + model_name='stockitemtestresult', + name='template', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='test_results', to='part.parttesttemplate'), + ), + ] diff --git a/InvenTree/stock/migrations/0108_auto_20240219_0252.py b/InvenTree/stock/migrations/0108_auto_20240219_0252.py new file mode 100644 index 0000000000..60217577c0 --- /dev/null +++ b/InvenTree/stock/migrations/0108_auto_20240219_0252.py @@ -0,0 +1,114 @@ +# Generated by Django 4.2.10 on 2024-02-19 02:52 + +from django.db import migrations +from django.db.models import F, OuterRef, Subquery, IntegerField + + +def update_templates(apps, schema_editor): + """Run data migration to fix potentially mis-applied data migration. + + Ref: https://github.com/inventree/InvenTree/pull/6514 + + The previous data migration (stock.0106_auto_20240207_0353) had a bug, + where it would look for any matching PartTestTemplate objects for a given StockItemTestResult, + as long as the "part tree ID" was the same. + + However, if the template was defined for a part on a different *branch* of the tree, + the wrong template could be applied. + + This is really only the case where the user has a very complex set of nested part variants, + but still there is a potential for a mis-match. + + This data migration will attempt to fix any mis-applied templates. + """ + + PartTestTemplate = apps.get_model('part', 'PartTestTemplate') + StockItemTestResult = apps.get_model('stock', 'StockItemTestResult') + + # Find any StockItemTestResult objects which match a "bad" template + # Here a "bad" template points to a Part which is not *above* the part in the tree + bad_results = StockItemTestResult.objects.exclude( + stock_item__part__tree_id=F('template__part__tree_id'), + stock_item__part__lft__gte=F('template__part__lft'), + stock_item__part__rght__lte=F('template__part__rght'), + ) + + n = bad_results.count() + + if n == 0: + # Escape early - no bad results! + return + + print(f"Found {n} StockItemTestResult objects with bad templates...") + + # For each bad result, attempt to find a matching template + # Here, a matching template must point to a part *above* the part in the tree + # Annotate the queryset with a "mathching template" + + template_query = PartTestTemplate.objects.filter( + part__tree_id=OuterRef('stock_item__part__tree_id'), + part__lft__lte=OuterRef('stock_item__part__lft'), + part__rght__gte=OuterRef('stock_item__part__rght'), + key=OuterRef('template__key') + ).order_by('part__level').values('pk') + + bad_results = bad_results.annotate( + matching_template=Subquery(template_query[:1], output_field=IntegerField()) + ) + + # Update the results for which we have a "good" matching template + matching_results = bad_results.filter(matching_template__isnull=False) + missing_results = bad_results.filter(matching_template__isnull=True) + + results_to_update = [] + + for result in matching_results: + if result.template.pk != result.matching_template: + result.template = PartTestTemplate.objects.get(pk=result.matching_template) + results_to_update.append(result) + + if len(results_to_update) > 0: + # Update any results which point to the wrong template, but have a matching template + print("Updating", len(results_to_update), "matching templates...") + StockItemTestResult.objects.bulk_update(results_to_update, ['template']) + + results_to_update = [] + + # For the remaining results, we need to create a new template + for result in missing_results: + # Check that a template does *not* exist already + if template := PartTestTemplate.objects.filter( + part__tree_id=result.stock_item.part.tree_id, + part__lft__lte=result.stock_item.part.lft, + part__rght__gte=result.stock_item.part.rght, + key=result.template.key + ).first(): + pass + else: + # Create a new template (by copying the old one) + template = result.template + template.part = result.stock_item.part + template.pk = None + template.save() + template.refresh_from_db() + + result.template = template + results_to_update.append(result) + + if len(results_to_update) > 0: + print("Updating", len(results_to_update), "missing templates...") + StockItemTestResult.objects.bulk_update(results_to_update, ['template']) + + # Finall, check that there are no longer any "bad" results + assert(bad_results.order_by('pk').count() == 0) + + +class Migration(migrations.Migration): + + dependencies = [ + ('stock', '0107_remove_stockitemtestresult_test_and_more'), + ] + + operations = [ + migrations.RunPython(update_templates, reverse_code=migrations.RunPython.noop) + ] diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index 18e7fe4f6b..517345b243 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -2,6 +2,7 @@ from __future__ import annotations +import logging import os from datetime import datetime, timedelta from decimal import Decimal, InvalidOperation @@ -24,21 +25,15 @@ from mptt.models import MPTTModel, TreeForeignKey from taggit.managers import TaggableManager import common.models +import InvenTree.exceptions import InvenTree.helpers +import InvenTree.models import InvenTree.ready import InvenTree.tasks import label.models import report.models from company import models as CompanyModels from InvenTree.fields import InvenTreeModelMoneyField, InvenTreeURLField -from InvenTree.models import ( - InvenTreeAttachment, - InvenTreeBarcodeMixin, - InvenTreeNotesMixin, - InvenTreeTree, - MetadataMixin, - extract_int, -) from InvenTree.status_codes import ( SalesOrderStatusGroups, StockHistoryCode, @@ -49,8 +44,10 @@ from part import models as PartModels from plugin.events import trigger_event from users.models import Owner +logger = logging.getLogger('inventree') -class StockLocationType(MetadataMixin, models.Model): + +class StockLocationType(InvenTree.models.MetadataMixin, models.Model): """A type of stock location like Warehouse, room, shelf, drawer. Attributes: @@ -104,10 +101,13 @@ class StockLocationManager(TreeManager): - Joins the StockLocationType by default for speedier icon access """ - return super().get_queryset().select_related('location_type') + # return super().get_queryset().select_related("location_type") + return super().get_queryset() -class StockLocation(InvenTreeBarcodeMixin, MetadataMixin, InvenTreeTree): +class StockLocation( + InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeTree +): """Organization tree for StockItem objects. A "StockLocation" can be considered a warehouse, or storage location @@ -185,7 +185,7 @@ class StockLocation(InvenTreeBarcodeMixin, MetadataMixin, InvenTreeTree): ) @property - def icon(self): + def icon(self) -> str: """Get the current icon used for this location. The icon field on this model takes precedences over the possibly assigned stock location type @@ -325,8 +325,9 @@ def generate_batch_code(): 'year': now.year, 'month': now.month, 'day': now.day, - 'hour': now.minute, + 'hour': now.hour, 'minute': now.minute, + 'week': now.isocalendar()[1], } return Template(batch_template).render(context) @@ -348,9 +349,10 @@ def default_delete_on_deplete(): class StockItem( - InvenTreeBarcodeMixin, - InvenTreeNotesMixin, - MetadataMixin, + InvenTree.models.InvenTreeBarcodeMixin, + InvenTree.models.InvenTreeNotesMixin, + InvenTree.models.MetadataMixin, + InvenTree.models.PluginValidationMixin, common.models.MetaMixin, MPTTModel, ): @@ -446,7 +448,7 @@ class StockItem( serial_int = 0 if serial not in [None, '']: - serial_int = extract_int(serial) + serial_int = InvenTree.helpers.extract_int(serial) self.serial_int = serial_int @@ -600,6 +602,10 @@ class StockItem( plugin.validate_batch_code(self.batch, self) except ValidationError as exc: raise ValidationError({'batch': exc.message}) + except Exception: + InvenTree.exceptions.log_error( + f'plugin.{plugin.slug}.validate_batch_code' + ) def clean(self): """Validate the StockItem object (separate to field validation). @@ -1544,6 +1550,54 @@ class StockItem( result.stock_item = self result.save() + def add_test_result(self, create_template=True, **kwargs): + """Helper function to add a new StockItemTestResult. + + The main purpose of this function is to allow lookup of the template, + based on the provided test name. + + If no template is found, a new one is created (if create_template=True). + + Args: + create_template: If True, create a new template if it does not exist + + kwargs: + template: The ID of the associated PartTestTemplate + test_name: The name of the test (if the template is not provided) + result: The result of the test + value: The value of the test + user: The user who performed the test + notes: Any notes associated with the test + """ + template = kwargs.get('template', None) + test_name = kwargs.pop('test_name', None) + + test_key = InvenTree.helpers.generateTestKey(test_name) + + if template is None and test_name is not None: + # Attempt to find a matching template + + ancestors = self.part.get_ancestors(include_self=True) + + template = PartModels.PartTestTemplate.objects.filter( + part__tree_id=self.part.tree_id, part__in=ancestors, key=test_key + ).first() + + if template is None: + if create_template: + template = PartModels.PartTestTemplate.objects.create( + part=self.part, test_name=test_name + ) + else: + raise ValidationError({ + 'template': _('Test template does not exist') + }) + + kwargs['template'] = template + kwargs['stock_item'] = self + + return StockItemTestResult.objects.create(**kwargs) + def can_merge(self, other=None, raise_error=False, **kwargs): """Check if this stock item can be merged into another stock item.""" allow_mismatched_suppliers = kwargs.get('allow_mismatched_suppliers', False) @@ -1617,6 +1671,9 @@ class StockItem( if len(other_items) == 0: return + # Keep track of the tree IDs that are being merged + tree_ids = {self.tree_id} + user = kwargs.get('user', None) location = kwargs.get('location', None) notes = kwargs.get('notes', None) @@ -1628,6 +1685,8 @@ class StockItem( if not self.can_merge(other, raise_error=raise_error, **kwargs): return + tree_ids.add(other.tree_id) + for other in other_items: self.quantity += other.quantity @@ -1659,6 +1718,14 @@ class StockItem( self.location = location self.save() + # Rebuild stock trees as required + try: + for tree_id in tree_ids: + StockItem.objects.partial_rebuild(tree_id=tree_id) + except Exception: + logger.warning('Rebuilding entire StockItem tree') + StockItem.objects.rebuild() + @transaction.atomic def splitStock(self, quantity, location=None, user=None, **kwargs): """Split this stock item into two items, in the same location. @@ -1706,9 +1773,12 @@ class StockItem( # Nullify the PK so a new record is created new_stock = StockItem.objects.get(pk=self.pk) new_stock.pk = None - new_stock.parent = self new_stock.quantity = quantity + # Update the new stock item to ensure the tree structure is observed + new_stock.parent = self + new_stock.level = self.level + 1 + # Move to the new location if specified, otherwise use current location if location: new_stock.location = location @@ -1748,6 +1818,19 @@ class StockItem( stockitem=new_stock, ) + # Rebuild the tree for this parent item + try: + StockItem.objects.partial_rebuild(tree_id=self.tree_id) + except Exception: + logger.warning('Rebuilding entire StockItem tree') + StockItem.objects.rebuild() + + # Attempt to reload the new item from the database + try: + new_stock.refresh_from_db() + except Exception: + pass + # Return a copy of the "new" stock item return new_stock @@ -1972,19 +2055,24 @@ class StockItem( results.delete() - def getTestResults(self, test=None, result=None, user=None): + def getTestResults(self, template=None, test=None, result=None, user=None): """Return all test results associated with this StockItem. Optionally can filter results by: + - Test template ID - Test name - Test result - User """ results = self.test_results + if template: + results = results.filter(template=template) + if test: # Filter by test name - results = results.filter(test=test) + test_key = InvenTree.helpers.generateTestKey(test) + results = results.filter(template__key=test_key) if result is not None: # Filter by test status @@ -2015,8 +2103,7 @@ class StockItem( result_map = {} for result in results: - key = InvenTree.helpers.generateTestKey(result.test) - result_map[key] = result + result_map[result.key] = result # Do we wish to "cascade" and include test results from installed stock items? cascade = kwargs.get('cascade', False) @@ -2076,7 +2163,7 @@ class StockItem( def hasRequiredTests(self): """Return True if there are any 'required tests' associated with this StockItem.""" - return self.part.getRequiredTests().count() > 0 + return self.required_test_count > 0 def passedAllRequiredTests(self): """Returns True if this StockItem has passed all required tests.""" @@ -2173,7 +2260,7 @@ def after_save_stock_item(sender, instance: StockItem, created, **kwargs): instance.part.schedule_pricing_update(create=True) -class StockItemAttachment(InvenTreeAttachment): +class StockItemAttachment(InvenTree.models.InvenTreeAttachment): """Model for storing file attachments against a StockItem object.""" @staticmethod @@ -2190,7 +2277,7 @@ class StockItemAttachment(InvenTreeAttachment): ) -class StockItemTracking(models.Model): +class StockItemTracking(InvenTree.models.InvenTreeModel): """Stock tracking entry - used for tracking history of a particular StockItem. Note: 2021-05-11 @@ -2254,7 +2341,7 @@ def rename_stock_item_test_result_attachment(instance, filename): ) -class StockItemTestResult(MetadataMixin, models.Model): +class StockItemTestResult(InvenTree.models.InvenTreeMetadataModel): """A StockItemTestResult records results of custom tests against individual StockItem objects. This is useful for tracking unit acceptance tests, and particularly useful when integrated @@ -2264,7 +2351,7 @@ class StockItemTestResult(MetadataMixin, models.Model): Attributes: stock_item: Link to StockItem - test: Test name (simple string matching) + template: Link to TestTemplate result: Test result value (pass / fail / etc) value: Recorded test output value (optional) attachment: Link to StockItem attachment (optional) @@ -2273,6 +2360,10 @@ class StockItemTestResult(MetadataMixin, models.Model): date: Date the test result was recorded """ + def __str__(self): + """Return string representation.""" + return f'{self.test_name} - {self.result}' + @staticmethod def get_api_url(): """Return API url.""" @@ -2312,14 +2403,22 @@ class StockItemTestResult(MetadataMixin, models.Model): @property def key(self): """Return key for test.""" - return InvenTree.helpers.generateTestKey(self.test) + return InvenTree.helpers.generateTestKey(self.test_name) stock_item = models.ForeignKey( StockItem, on_delete=models.CASCADE, related_name='test_results' ) - test = models.CharField( - blank=False, max_length=100, verbose_name=_('Test'), help_text=_('Test name') + @property + def test_name(self): + """Return the test name of the associated test template.""" + return self.template.test_name + + template = models.ForeignKey( + 'part.parttesttemplate', + on_delete=models.CASCADE, + blank=False, + related_name='test_results', ) result = models.BooleanField( diff --git a/InvenTree/stock/serializers.py b/InvenTree/stock/serializers.py index c38b67f32a..87b0090e21 100644 --- a/InvenTree/stock/serializers.py +++ b/InvenTree/stock/serializers.py @@ -1,5 +1,6 @@ """JSON serializers for Stock app.""" +import logging from datetime import datetime, timedelta from decimal import Decimal @@ -22,9 +23,8 @@ import InvenTree.status_codes import part.models as part_models import stock.filters from company.serializers import SupplierPartSerializer -from InvenTree.models import extract_int from InvenTree.serializers import InvenTreeCurrencySerializer, InvenTreeDecimalField -from part.serializers import PartBriefSerializer +from part.serializers import PartBriefSerializer, PartTestTemplateSerializer from .models import ( StockItem, @@ -35,6 +35,8 @@ from .models import ( StockLocationType, ) +logger = logging.getLogger('inventree') + class LocationBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer): """Provides a brief serializer for a StockLocation object.""" @@ -57,8 +59,6 @@ class StockItemTestResultSerializer(InvenTree.serializers.InvenTreeModelSerializ fields = [ 'pk', 'stock_item', - 'key', - 'test', 'result', 'value', 'attachment', @@ -66,6 +66,8 @@ class StockItemTestResultSerializer(InvenTree.serializers.InvenTreeModelSerializ 'user', 'user_detail', 'date', + 'template', + 'template_detail', ] read_only_fields = ['pk', 'user', 'date'] @@ -73,20 +75,69 @@ class StockItemTestResultSerializer(InvenTree.serializers.InvenTreeModelSerializ def __init__(self, *args, **kwargs): """Add detail fields.""" user_detail = kwargs.pop('user_detail', False) + template_detail = kwargs.pop('template_detail', False) super().__init__(*args, **kwargs) if user_detail is not True: self.fields.pop('user_detail') + if template_detail is not True: + self.fields.pop('template_detail') + user_detail = InvenTree.serializers.UserSerializer(source='user', read_only=True) - key = serializers.CharField(read_only=True) + template = serializers.PrimaryKeyRelatedField( + queryset=part_models.PartTestTemplate.objects.all(), + many=False, + required=False, + allow_null=True, + help_text=_('Template'), + label=_('Test template for this result'), + ) + + template_detail = PartTestTemplateSerializer(source='template', read_only=True) attachment = InvenTree.serializers.InvenTreeAttachmentSerializerField( required=False ) + def validate(self, data): + """Validate the test result data.""" + stock_item = data['stock_item'] + template = data.get('template', None) + + # To support legacy API, we can accept a test name instead of a template + # In such a case, we use the test name to lookup the appropriate template + test_name = self.context['request'].data.get('test', None) + + if not template and not test_name: + raise ValidationError(_('Template ID or test name must be provided')) + + if not template: + test_key = InvenTree.helpers.generateTestKey(test_name) + + ancestors = stock_item.part.get_ancestors(include_self=True) + + # Find a template based on name + if template := part_models.PartTestTemplate.objects.filter( + part__tree_id=stock_item.part.tree_id, part__in=ancestors, key=test_key + ).first(): + data['template'] = template + + else: + logger.info( + "No matching test template found for '%s' - creating a new template", + test_name, + ) + + # Create a new test template based on the provided dasta + data['template'] = part_models.PartTestTemplate.objects.create( + part=stock_item.part, test_name=test_name + ) + + return super().validate(data) + class StockItemSerializerBrief(InvenTree.serializers.InvenTreeModelSerializer): """Brief serializers for a StockItem.""" @@ -114,7 +165,7 @@ class StockItemSerializerBrief(InvenTree.serializers.InvenTreeModelSerializer): def validate_serial(self, value): """Make sure serial is not to big.""" - if abs(extract_int(value)) > 0x7FFFFFFF: + if abs(InvenTree.helpers.extract_int(value)) > 0x7FFFFFFF: raise serializers.ValidationError(_('Serial number is too large')) return value @@ -170,6 +221,7 @@ class StockItemSerializer(InvenTree.serializers.InvenTreeTagModelSerializer): 'allocated', 'expired', 'installed_items', + 'child_items', 'stale', 'tracking_items', 'tags', @@ -288,6 +340,9 @@ class StockItemSerializer(InvenTree.serializers.InvenTreeTagModelSerializer): # Annotate with the total number of "installed items" queryset = queryset.annotate(installed_items=SubqueryCount('installed_parts')) + # Annotate with the total number of "child items" (split stock items) + queryset = queryset.annotate(child_items=stock.filters.annotate_child_items()) + return queryset status_text = serializers.CharField(source='get_status_display', read_only=True) @@ -315,6 +370,7 @@ class StockItemSerializer(InvenTree.serializers.InvenTreeTagModelSerializer): allocated = serializers.FloatField(required=False) expired = serializers.BooleanField(required=False, read_only=True) installed_items = serializers.IntegerField(read_only=True, required=False) + child_items = serializers.IntegerField(read_only=True, required=False) stale = serializers.BooleanField(required=False, read_only=True) tracking_items = serializers.IntegerField(read_only=True, required=False) @@ -1189,6 +1245,14 @@ class StockMergeSerializer(serializers.Serializer): ) +def stock_item_adjust_status_options(): + """Return a custom set of options for the StockItem status adjustment field. + + In particular, include a Null option for the status field. + """ + return [(None, _('No Change'))] + InvenTree.status_codes.StockStatus.items() + + class StockAdjustmentItemSerializer(serializers.Serializer): """Serializer for a single StockItem within a stock adjument request. @@ -1231,8 +1295,8 @@ class StockAdjustmentItemSerializer(serializers.Serializer): ) status = serializers.ChoiceField( - choices=InvenTree.status_codes.StockStatus.items(), - default=InvenTree.status_codes.StockStatus.OK.value, + choices=stock_item_adjust_status_options(), + default=None, label=_('Status'), help_text=_('Stock item status code'), required=False, @@ -1369,8 +1433,8 @@ class StockTransferSerializer(StockAdjustmentSerializer): kwargs = {} for field_name in StockItem.optional_transfer_fields(): - if field_name in item: - kwargs[field_name] = item[field_name] + if field_value := item.get(field_name, None): + kwargs[field_name] = field_value stock_item.move( location, notes, request.user, quantity=quantity, **kwargs diff --git a/InvenTree/stock/templates/stock/item.html b/InvenTree/stock/templates/stock/item.html index d811aa17f3..30272d53a9 100644 --- a/InvenTree/stock/templates/stock/item.html +++ b/InvenTree/stock/templates/stock/item.html @@ -196,6 +196,7 @@ stock_item: {{ item.pk }}, part: {{ item.part.pk }}, quantity: {{ item.quantity|unlocalize }}, + can_edit: {% js_bool roles.stock.change %}, } ); @@ -291,6 +292,7 @@ constructForm('{% url "api-stock-test-result-list" %}', { method: 'POST', fields: stockItemTestResultFields({ + part: {{ item.part.pk }}, stock_item: {{ item.pk }}, }), title: '{% trans "Add Test Result" escape %}', diff --git a/InvenTree/stock/test_api.py b/InvenTree/stock/test_api.py index ebee467b2b..187a2f5219 100644 --- a/InvenTree/stock/test_api.py +++ b/InvenTree/stock/test_api.py @@ -19,7 +19,7 @@ import part.models from common.models import InvenTreeSetting from InvenTree.status_codes import StockHistoryCode, StockStatus from InvenTree.unit_test import InvenTreeAPITestCase -from part.models import Part +from part.models import Part, PartTestTemplate from stock.models import ( StockItem, StockItemTestResult, @@ -34,6 +34,7 @@ class StockAPITestCase(InvenTreeAPITestCase): fixtures = [ 'category', 'part', + 'test_templates', 'bom', 'company', 'location', @@ -1559,6 +1560,8 @@ class StockTestResultTest(StockAPITestCase): response = self.client.get(url) n = len(response.data) + # Test upload using test name (legacy method) + # Note that a new test template will be created data = { 'stock_item': 105, 'test': 'Checked Steam Valve', @@ -1569,6 +1572,9 @@ class StockTestResultTest(StockAPITestCase): response = self.post(url, data, expected_code=201) + # Check that a new test template has been created + test_template = PartTestTemplate.objects.get(key='checkedsteamvalve') + response = self.client.get(url) self.assertEqual(len(response.data), n + 1) @@ -1581,6 +1587,27 @@ class StockTestResultTest(StockAPITestCase): self.assertEqual(test['value'], '150kPa') self.assertEqual(test['user'], self.user.pk) + # Test upload using template reference (new method) + data = { + 'stock_item': 105, + 'template': test_template.pk, + 'result': True, + 'value': '75kPa', + } + + response = self.post(url, data, expected_code=201) + + # Check that a new test template has been created + self.assertEqual(test_template.test_results.all().count(), 2) + + # List test results against the template + response = self.client.get(url, data={'template': test_template.pk}) + + self.assertEqual(len(response.data), 2) + + for item in response.data: + self.assertEqual(item['template'], test_template.pk) + def test_post_bitmap(self): """2021-08-25. @@ -1598,14 +1625,15 @@ class StockTestResultTest(StockAPITestCase): with open(image_file, 'rb') as bitmap: data = { 'stock_item': 105, - 'test': 'Checked Steam Valve', + 'test': 'Temperature Test', 'result': False, - 'value': '150kPa', - 'notes': 'I guess there was just too much pressure?', + 'value': '550C', + 'notes': 'I guess there was just too much heat?', 'attachment': bitmap, } response = self.client.post(self.get_url(), data) + self.assertEqual(response.status_code, 201) # Check that an attachment has been uploaded @@ -1619,23 +1647,34 @@ class StockTestResultTest(StockAPITestCase): url = reverse('api-stock-test-result-list') + stock_item = StockItem.objects.get(pk=1) + + # Ensure the part is marked as "trackable" + p = stock_item.part + p.trackable = True + p.save() + # Create some objects (via the API) for _ii in range(50): response = self.post( url, { - 'stock_item': 1, + 'stock_item': stock_item.pk, 'test': f'Some test {_ii}', 'result': True, 'value': 'Test result value', }, - expected_code=201, + # expected_code=201, ) tests.append(response.data['pk']) self.assertEqual(StockItemTestResult.objects.count(), n + 50) + # Filter test results by part + response = self.get(url, {'part': p.pk}, expected_code=200) + self.assertEqual(len(response.data), 50) + # Attempt a delete without providing items self.delete(url, {}, expected_code=400) @@ -1838,6 +1877,7 @@ class StockMetadataAPITest(InvenTreeAPITestCase): fixtures = [ 'category', 'part', + 'test_templates', 'bom', 'company', 'location', diff --git a/InvenTree/stock/test_migrations.py b/InvenTree/stock/test_migrations.py index 661c266706..1d2eb0f0b2 100644 --- a/InvenTree/stock/test_migrations.py +++ b/InvenTree/stock/test_migrations.py @@ -133,3 +133,100 @@ class TestScheduledForDeletionMigration(MigratorTestCase): # All the "scheduled for deletion" items have been removed self.assertEqual(StockItem.objects.count(), 3) + + +class TestTestResultMigration(MigratorTestCase): + """Unit tests for StockItemTestResult data migrations.""" + + migrate_from = ('stock', '0103_stock_location_types') + migrate_to = ('stock', '0107_remove_stockitemtestresult_test_and_more') + + test_keys = { + 'appliedpaint': 'Applied Paint', + 'programmed': 'Programmed', + 'checkedresultcode': 'Checked Result CODE', + } + + def prepare(self): + """Create initial data.""" + Part = self.old_state.apps.get_model('part', 'part') + PartTestTemplate = self.old_state.apps.get_model('part', 'parttesttemplate') + StockItem = self.old_state.apps.get_model('stock', 'stockitem') + StockItemTestResult = self.old_state.apps.get_model( + 'stock', 'stockitemtestresult' + ) + + # Create a test part + parent_part = Part.objects.create( + name='Parent Part', + description='A parent part', + is_template=True, + active=True, + trackable=True, + level=0, + tree_id=1, + lft=0, + rght=0, + ) + + # Create some child parts + children = [ + Part.objects.create( + name=f'Child part {idx}', + description='A child part', + variant_of=parent_part, + active=True, + trackable=True, + level=0, + tree_id=1, + lft=0, + rght=0, + ) + for idx in range(3) + ] + + # Create some stock items + for ii, child in enumerate(children): + for jj in range(4): + si = StockItem.objects.create( + part=child, + serial=str(1 + ii * jj), + quantity=1, + tree_id=0, + level=0, + lft=0, + rght=0, + ) + + # Create some test results + for _k, v in self.test_keys.items(): + StockItemTestResult.objects.create( + stock_item=si, test=v, result=True, value=f'Result: {ii} : {jj}' + ) + + # Check initial record counts + self.assertEqual(PartTestTemplate.objects.count(), 0) + self.assertEqual(StockItemTestResult.objects.count(), 36) + + def test_migration(self): + """Test that the migrations were applied as expected.""" + Part = self.new_state.apps.get_model('part', 'part') + PartTestTemplate = self.new_state.apps.get_model('part', 'parttesttemplate') + StockItem = self.new_state.apps.get_model('stock', 'stockitem') + StockItemTestResult = self.new_state.apps.get_model( + 'stock', 'stockitemtestresult' + ) + + # Test that original record counts are correct + self.assertEqual(Part.objects.count(), 4) + self.assertEqual(StockItem.objects.count(), 12) + self.assertEqual(StockItemTestResult.objects.count(), 36) + + # Two more test templates should have been created + self.assertEqual(PartTestTemplate.objects.count(), 3) + + for k in self.test_keys.keys(): + self.assertTrue(PartTestTemplate.objects.filter(key=k).exists()) + + for result in StockItemTestResult.objects.all(): + self.assertIsNotNone(result.template) diff --git a/InvenTree/stock/tests.py b/InvenTree/stock/tests.py index aa965a350b..a9a6e1cfda 100644 --- a/InvenTree/stock/tests.py +++ b/InvenTree/stock/tests.py @@ -12,7 +12,7 @@ from company.models import Company from InvenTree.status_codes import StockHistoryCode from InvenTree.unit_test import InvenTreeTestCase from order.models import SalesOrder -from part.models import Part +from part.models import Part, PartTestTemplate from .models import StockItem, StockItemTestResult, StockItemTracking, StockLocation @@ -502,9 +502,18 @@ class StockTest(StockTestBase): ait = it.allocateToCustomer( customer, quantity=an, order=order, user=None, notes='Allocated some stock' ) + + self.assertEqual(ait.quantity, an) + self.assertTrue(ait.parent, it) + + # There should be only quantity 10x remaining + it.refresh_from_db() + self.assertEqual(it.quantity, 10) + ait.return_from_customer(it.location, None, notes='Stock removed from customer') # When returned stock is returned to its original (parent) location, check that the parent has correct quantity + it.refresh_from_db() self.assertEqual(it.quantity, n) ait = it.allocateToCustomer( @@ -987,6 +996,63 @@ class VariantTest(StockTestBase): item.save() +class StockTreeTest(StockTestBase): + """Unit test for StockItem tree structure.""" + + def test_stock_split(self): + """Test that stock splitting works correctly.""" + StockItem.objects.rebuild() + + part = Part.objects.create(name='My part', description='My part description') + location = StockLocation.objects.create(name='Test Location') + + # Create an initial stock item + item = StockItem.objects.create(part=part, quantity=1000, location=location) + + # Test that the initial MPTT values are correct + self.assertEqual(item.level, 0) + self.assertEqual(item.lft, 1) + self.assertEqual(item.rght, 2) + + children = [] + + self.assertEqual(item.get_descendants(include_self=False).count(), 0) + self.assertEqual(item.get_descendants(include_self=True).count(), 1) + + # Create child items by splitting stock + for idx in range(10): + child = item.splitStock(50, None, None) + children.append(child) + + # Check that the child item has been correctly created + self.assertEqual(child.parent.pk, item.pk) + self.assertEqual(child.tree_id, item.tree_id) + self.assertEqual(child.level, 1) + + item.refresh_from_db() + self.assertEqual(item.get_children().count(), idx + 1) + self.assertEqual(item.get_descendants(include_self=True).count(), idx + 2) + + item.refresh_from_db() + n = item.get_descendants(include_self=True).count() + + for child in children: + # Create multiple sub-childs + for _idx in range(3): + sub_child = child.splitStock(10, None, None) + self.assertEqual(sub_child.parent.pk, child.pk) + self.assertEqual(sub_child.tree_id, child.tree_id) + self.assertEqual(sub_child.level, 2) + + self.assertEqual(sub_child.get_ancestors(include_self=True).count(), 3) + + child.refresh_from_db() + self.assertEqual(child.get_descendants(include_self=True).count(), 4) + + item.refresh_from_db() + self.assertEqual(item.get_descendants(include_self=True).count(), n + 30) + + class TestResultTest(StockTestBase): """Tests for the StockItemTestResult model.""" @@ -1020,45 +1086,73 @@ class TestResultTest(StockTestBase): self.assertEqual(status['total'], 5) self.assertEqual(status['passed'], 2) - self.assertEqual(status['failed'], 2) + self.assertEqual(status['failed'], 1) self.assertFalse(item.passedAllRequiredTests()) # Add some new test results to make it pass! - test = StockItemTestResult.objects.get(pk=12345) - test.result = True + test = StockItemTestResult.objects.get(pk=8) + test.result = False test.save() + status = item.requiredTestStatus() + self.assertEqual(status['total'], 5) + self.assertEqual(status['passed'], 1) + self.assertEqual(status['failed'], 2) + + template = PartTestTemplate.objects.get(pk=3) + StockItemTestResult.objects.create( - stock_item=item, test='sew cushion', result=True + stock_item=item, template=template, result=True ) # Still should be failing at this point, # as the most recent "apply paint" test was False self.assertFalse(item.passedAllRequiredTests()) + template = PartTestTemplate.objects.get(pk=2) + # Add a new test result against this required test StockItemTestResult.objects.create( stock_item=item, - test='apply paint', + template=template, date=datetime.datetime(2022, 12, 12), result=True, ) + self.assertFalse(item.passedAllRequiredTests()) + + # Generate a passing result for all required tests + for template in item.part.getRequiredTests(): + StockItemTestResult.objects.create( + stock_item=item, + template=template, + result=True, + date=datetime.datetime(2025, 12, 12), + ) + self.assertTrue(item.passedAllRequiredTests()) def test_duplicate_item_tests(self): """Test duplicate item behaviour.""" # Create an example stock item by copying one from the database (because we are lazy) + + from plugin.registry import registry + + StockItem.objects.rebuild() + item = StockItem.objects.get(pk=522) item.pk = None item.serial = None item.quantity = 50 - # Try with an invalid batch code (according to sample validatoin plugin) + # Try with an invalid batch code (according to sample validation plugin) item.batch = 'X234' + # Ensure that the sample validation plugin is activated + registry.set_plugin_state('validator', True) + with self.assertRaises(ValidationError): item.save() @@ -1066,17 +1160,9 @@ class TestResultTest(StockTestBase): item.save() # Do some tests! - StockItemTestResult.objects.create( - stock_item=item, test='Firmware', result=True - ) - - StockItemTestResult.objects.create( - stock_item=item, test='Paint Color', result=True, value='Red' - ) - - StockItemTestResult.objects.create( - stock_item=item, test='Applied Sticker', result=False - ) + item.add_test_result(test_name='Firmware', result=True) + item.add_test_result(test_name='Paint Color', result=True, value='Red') + item.add_test_result(test_name='Applied Sticker', result=False) self.assertEqual(item.test_results.count(), 3) self.assertEqual(item.quantity, 50) @@ -1089,7 +1175,7 @@ class TestResultTest(StockTestBase): self.assertEqual(item.test_results.count(), 3) self.assertEqual(item2.test_results.count(), 3) - StockItemTestResult.objects.create(stock_item=item2, test='A new test') + item2.add_test_result(test_name='A new test') self.assertEqual(item.test_results.count(), 3) self.assertEqual(item2.test_results.count(), 4) @@ -1098,7 +1184,7 @@ class TestResultTest(StockTestBase): item2.serializeStock(1, [100], self.user) # Add a test result to the parent *after* serialization - StockItemTestResult.objects.create(stock_item=item2, test='abcde') + item2.add_test_result(test_name='abcde') self.assertEqual(item2.test_results.count(), 5) @@ -1127,11 +1213,20 @@ class TestResultTest(StockTestBase): ) # Now, create some test results against the sub item + # Ensure there is a matching PartTestTemplate + if template := PartTestTemplate.objects.filter( + part=item.part, key='firmwareversion' + ).first(): + pass + else: + template = PartTestTemplate.objects.create( + part=item.part, test_name='Firmware Version', required=True + ) # First test is overshadowed by the same test for the parent part StockItemTestResult.objects.create( stock_item=sub_item, - test='firmware version', + template=template, date=datetime.datetime.now().date(), result=True, ) @@ -1140,10 +1235,19 @@ class TestResultTest(StockTestBase): tests = item.testResultMap(include_installed=True) self.assertEqual(len(tests), 3) + if template := PartTestTemplate.objects.filter( + part=item.part, key='somenewtest' + ).first(): + pass + else: + template = PartTestTemplate.objects.create( + part=item.part, test_name='Some New Test', required=True + ) + # Now, add a *unique* test result for the sub item StockItemTestResult.objects.create( stock_item=sub_item, - test='some new test', + template=template, date=datetime.datetime.now().date(), result=False, value='abcde', diff --git a/InvenTree/templates/InvenTree/settings/build.html b/InvenTree/templates/InvenTree/settings/build.html index cee6d1c349..764e333621 100644 --- a/InvenTree/templates/InvenTree/settings/build.html +++ b/InvenTree/templates/InvenTree/settings/build.html @@ -13,6 +13,7 @@ {% include "InvenTree/settings/setting.html" with key="BUILDORDER_REFERENCE_PATTERN" %} + {% include "InvenTree/settings/setting.html" with key="PREVENT_BUILD_COMPLETION_HAVING_INCOMPLETED_TESTS" %}
diff --git a/InvenTree/templates/js/translated/build.js b/InvenTree/templates/js/translated/build.js index b0caeef764..e8cf8ac4b7 100644 --- a/InvenTree/templates/js/translated/build.js +++ b/InvenTree/templates/js/translated/build.js @@ -173,6 +173,11 @@ function newBuildOrder(options={}) { fields.sales_order.value = options.sales_order; } + // Specify a project code + if (options.project_code) { + fields.project_code.value = options.project_code; + } + if (options.data) { delete options.data.pk; } @@ -966,7 +971,7 @@ function loadBuildOrderAllocationTable(table, options={}) { switchable: false, title: '{% trans "Build Order" %}', formatter: function(value, row) { - let ref = `${row.build_detail.reference}`; + let ref = row.build_detail?.reference ?? row.build; let html = renderLink(ref, `/build/${row.build}/`); html += `- ${row.build_detail.title}`; @@ -1089,7 +1094,7 @@ function loadBuildOutputTable(build_info, options={}) { var params = options.params || {}; // test templates for the part being assembled - let test_templates = null; + let test_templates = []; // tracked line items for this build let has_tracked_lines = false; @@ -1133,6 +1138,9 @@ function loadBuildOutputTable(build_info, options={}) { test_templates.push(item); } }); + }, + error: function() { + test_templates = []; } } ); @@ -2553,6 +2561,7 @@ function loadBuildLineTable(table, build_id, options={}) { sortable: true, formatter: function(value, row) { var url = `/part/${row.part_detail.pk}/?display=part-stock`; + // Calculate the "available" quantity let available = row.available_stock + row.available_substitute_stock; @@ -2603,6 +2612,10 @@ function loadBuildLineTable(table, build_id, options={}) { icons += makeIconBadge('fa-shopping-cart', `{% trans "On Order" %}: ${formatDecimal(row.on_order)}`); } + if (row.in_production && row.in_production > 0) { + icons += makeIconBadge('fa-tools icon-blue', `{% trans "In Production" %}: ${formatDecimal(row.in_production)}`); + } + return renderLink(text, url) + icons; } }, @@ -2695,6 +2708,7 @@ function loadBuildLineTable(table, build_id, options={}) { part: row.part_detail.pk, parent: build_id, quantity: Math.max(row.quantity - row.allocated, 0), + ...options, }); }); diff --git a/InvenTree/templates/js/translated/company.js b/InvenTree/templates/js/translated/company.js index b1fdacb540..424f5a27fa 100644 --- a/InvenTree/templates/js/translated/company.js +++ b/InvenTree/templates/js/translated/company.js @@ -226,7 +226,7 @@ function createSupplierPart(options={}) { var header = ''; if (options.part) { var part_model = {}; - inventreeGet(`{% url "api-part-list" %}${options.part}/.*`, {}, { + inventreeGet(`{% url "api-part-list" %}${options.part}/`, {}, { async: false, success: function(response) { part_model = response; diff --git a/InvenTree/templates/js/translated/forms.js b/InvenTree/templates/js/translated/forms.js index e5b075942e..6d448a0d14 100644 --- a/InvenTree/templates/js/translated/forms.js +++ b/InvenTree/templates/js/translated/forms.js @@ -346,7 +346,11 @@ function constructForm(url, options={}) { getApiEndpointOptions(url, function(OPTIONS) { // Copy across entire actions struct - options.actions = OPTIONS.actions.POST || OPTIONS.actions.PUT || OPTIONS.actions.PATCH || OPTIONS.actions.DELETE || {}; + if (OPTIONS && OPTIONS.actions) { + options.actions = OPTIONS.actions.POST || OPTIONS.actions.PUT || OPTIONS.actions.PATCH || OPTIONS.actions.DELETE || {}; + } else { + options.actions = {}; + } // Extract any custom 'context' information from the OPTIONS data options.context = OPTIONS.context || {}; diff --git a/InvenTree/templates/js/translated/model_renderers.js b/InvenTree/templates/js/translated/model_renderers.js index b65083867e..cae1c5e4fc 100644 --- a/InvenTree/templates/js/translated/model_renderers.js +++ b/InvenTree/templates/js/translated/model_renderers.js @@ -68,6 +68,8 @@ function getModelRenderer(model) { return renderPartCategory; case 'partparametertemplate': return renderPartParameterTemplate; + case 'parttesttemplate': + return renderPartTestTemplate; case 'purchaseorder': return renderPurchaseOrder; case 'salesorder': @@ -483,6 +485,18 @@ function renderPartParameterTemplate(data, parameters={}) { } +function renderPartTestTemplate(data, parameters={}) { + + return renderModel( + { + text: data.test_name, + textSecondary: data.description, + }, + parameters + ); +} + + // Renderer for "ManufacturerPart" model function renderManufacturerPart(data, parameters={}) { diff --git a/InvenTree/templates/js/translated/part.js b/InvenTree/templates/js/translated/part.js index 4babf49dd2..b24411f2e8 100644 --- a/InvenTree/templates/js/translated/part.js +++ b/InvenTree/templates/js/translated/part.js @@ -2867,6 +2867,18 @@ function loadPartTestTemplateTable(table, options) { field: 'test_name', title: '{% trans "Test Name" %}', sortable: true, + formatter: function(value, row) { + let html = value; + + if (row.results && row.results > 0) { + html += ` + + ${row.results} + `; + } + + return html; + } }, { field: 'description', @@ -2909,7 +2921,7 @@ function loadPartTestTemplateTable(table, options) { } else { var text = '{% trans "This test is defined for a parent part" %}'; - return renderLink(text, `/part/${row.part}/tests/`); + return renderLink(text, `/part/${row.part}/?display=test-templates`); } } } diff --git a/InvenTree/templates/js/translated/sales_order.js b/InvenTree/templates/js/translated/sales_order.js index 3f586e72f0..7f8ece3137 100644 --- a/InvenTree/templates/js/translated/sales_order.js +++ b/InvenTree/templates/js/translated/sales_order.js @@ -2174,7 +2174,8 @@ function loadSalesOrderLineItemTable(table, options={}) { part: pk, sales_order: options.order, quantity: quantity, - success: reloadTable + success: reloadTable, + ...options }); }); diff --git a/InvenTree/templates/js/translated/stock.js b/InvenTree/templates/js/translated/stock.js index 88613f09bc..0b442fecc1 100644 --- a/InvenTree/templates/js/translated/stock.js +++ b/InvenTree/templates/js/translated/stock.js @@ -1381,7 +1381,11 @@ function formatDate(row) { /* Construct set of default fields for a StockItemTestResult */ function stockItemTestResultFields(options={}) { let fields = { - test: {}, + template: { + filters: { + include_inherited: true, + } + }, result: {}, value: {}, attachment: {}, @@ -1393,6 +1397,10 @@ function stockItemTestResultFields(options={}) { }, }; + if (options.part) { + fields.template.filters.part = options.part; + } + if (options.stock_item) { fields.stock_item.value = options.stock_item; } @@ -1412,6 +1420,7 @@ function loadStockTestResultsTable(table, options) { let params = { part: options.part, + include_inherited: true, }; var filters = loadTableFilters(filterKey, params); @@ -1424,17 +1433,17 @@ function loadStockTestResultsTable(table, options) { let html = ''; + if (row.requires_attachment == false && row.requires_value == false && !row.result) { // Enable a "quick tick" option for this test result html += makeIconButton('fa-check-circle icon-green', 'button-test-tick', row.test_name, '{% trans "Pass test" %}'); } - html += makeIconButton('fa-plus icon-green', 'button-test-add', row.test_name, '{% trans "Add test result" %}'); + html += makeIconButton('fa-plus icon-green', 'button-test-add', row.templateId, '{% trans "Add test result" %}'); if (!grouped && row.result != null) { - var pk = row.pk; - html += makeEditButton('button-test-edit', pk, '{% trans "Edit test result" %}'); - html += makeDeleteButton('button-test-delete', pk, '{% trans "Delete test result" %}'); + html += makeEditButton('button-test-edit', row.testId, '{% trans "Edit test result" %}'); + html += makeDeleteButton('button-test-delete', row.testId, '{% trans "Delete test result" %}'); } return wrapButtons(html); @@ -1532,9 +1541,14 @@ function loadStockTestResultsTable(table, options) { ], onLoadSuccess: function(tableData) { - // Set "parent" for each existing row - tableData.forEach(function(item, idx) { - tableData[idx].parent = parent_node; + // Construct an initial dataset based on the returned templates + let results = tableData.map((template) => { + return { + ...template, + templateId: template.pk, + parent: parent_node, + results: [] + }; }); // Once the test template data are loaded, query for test results @@ -1545,6 +1559,7 @@ function loadStockTestResultsTable(table, options) { stock_item: options.stock_item, user_detail: true, attachment_detail: true, + template_detail: false, ordering: '-date', }; @@ -1561,54 +1576,40 @@ function loadStockTestResultsTable(table, options) { query_params, { success: function(data) { - // Iterate through the returned test data - data.forEach(function(item) { - var match = false; - var override = false; + data.sort((a, b) => { + return a.pk < b.pk; + }).forEach((row) => { + let idx = results.findIndex((template) => { + return template.templateId == row.template; + }); - // Extract the simplified test key - var key = item.key; + if (idx > -1) { - // Attempt to associate this result with an existing test - for (var idx = 0; idx < tableData.length; idx++) { + results[idx].results.push(row); - var row = tableData[idx]; - - if (key == row.key) { - - item.test_name = row.test_name; - item.test_description = row.description; - item.required = row.required; - - if (row.result == null) { - item.parent = parent_node; - tableData[idx] = item; - override = true; - } else { - item.parent = row.pk; - } - - match = true; - - break; + // Check if a test result is already recorded + if (results[idx].testId) { + // Push this result into the results array + results.push({ + ...results[idx], + ...row, + parent: results[idx].templateId, + testId: row.pk, + }); + } else { + // First result - update the parent row + results[idx] = { + ...row, + ...results[idx], + testId: row.pk, + }; } } - - // No match could be found - if (!match) { - item.test_name = item.test; - item.parent = parent_node; - } - - if (!override) { - tableData.push(item); - } - }); // Push data back into the table - table.bootstrapTable('load', tableData); + table.bootstrapTable('load', results); } } ); @@ -1645,25 +1646,17 @@ function loadStockTestResultsTable(table, options) { $(table).on('click', '.button-test-add', function() { var button = $(this); - var test_name = button.attr('pk'); + var templateId = button.attr('pk'); + + let fields = stockItemTestResultFields(); + + fields['stock_item']['value'] = options.stock_item; + fields['template']['value'] = templateId; + fields['template']['filters']['part'] = options.part; constructForm('{% url "api-stock-test-result-list" %}', { method: 'POST', - fields: { - test: { - value: test_name, - }, - result: {}, - value: {}, - attachment: {}, - notes: { - icon: 'fa-sticky-note', - }, - stock_item: { - value: options.stock_item, - hidden: true, - } - }, + fields: fields, title: '{% trans "Add Test Result" %}', onSuccess: reloadTestTable, }); @@ -1692,11 +1685,9 @@ function loadStockTestResultsTable(table, options) { var url = `/api/stock/test/${pk}/`; - var row = $(table).bootstrapTable('getRowByUniqueId', pk); - var html = `
- {% trans "Delete test result" %}: ${row.test_name || row.test || row.key} + {% trans "Delete test result" %}
`; constructForm(url, { @@ -3101,11 +3092,14 @@ function loadInstalledInTable(table, options) { field: 'buttons', title: '', switchable: false, + visible: options.can_edit, formatter: function(value, row) { let pk = row.pk; let html = ''; - html += makeIconButton('fa-unlink', 'button-uninstall', pk, '{% trans "Uninstall Stock Item" %}'); + if (options.can_edit) { + html += makeIconButton('fa-unlink', 'button-uninstall', pk, '{% trans "Uninstall Stock Item" %}'); + } return wrapButtons(html); } diff --git a/InvenTree/templates/socialaccount/signup.html b/InvenTree/templates/socialaccount/signup.html index 78bf0377e5..3164504128 100644 --- a/InvenTree/templates/socialaccount/signup.html +++ b/InvenTree/templates/socialaccount/signup.html @@ -7,8 +7,13 @@ {% block content %}

{% trans "Sign Up" %}

-

{% blocktrans with provider_name=account.get_provider.name site_name=site.name %}You are about to use your {{provider_name}} account to login to -{{site_name}}.
As a final step, please complete the following form:{% endblocktrans %}

+

+ {% blocktrans with provider_name=account.get_provider.name site_name=site.name %} + You are about to use your {{provider_name}} account to login to {{site_name}}. + {% endblocktrans %} +
+ {% trans "As a final step, please complete the following form" %}: +